From 7192525ea4696fb98d52a5d1f5edee4b9c169bb4 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Wed, 3 Jun 2026 18:14:05 +0200 Subject: [PATCH] reset: allow the caller to specify the current HEAD object When calling `reset_head()` we automatically derive the commit that the callers wants to move from by reading the HEAD commit. Some callers may already have resolved it, or they may want to move from a different commit that doesn't match HEAD. Introduce a new `oid_from` option that lets the caller specify the commit. Signed-off-by: Patrick Steinhardt Signed-off-by: Junio C Hamano --- reset.c | 5 ++++- reset.h | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/reset.c b/reset.c index ed9df6ca5c..7ff72de5d2 100644 --- a/reset.c +++ b/reset.c @@ -121,7 +121,10 @@ int reset_head(struct repository *r, const struct reset_head_opts *opts) goto leave_reset_head; } - if (!repo_get_oid(r, "HEAD", &head_oid)) { + if (opts->oid_from) { + oidcpy(&head_oid, opts->oid_from); + head = &head_oid; + } else if (!repo_get_oid(r, "HEAD", &head_oid)) { head = &head_oid; } else if (!oid || !reset_hard) { ret = error(_("could not determine HEAD revision")); diff --git a/reset.h b/reset.h index cb0700ffa7..51ce114543 100644 --- a/reset.h +++ b/reset.h @@ -37,6 +37,11 @@ struct reset_head_opts { * The commit to checkout/reset to. Defaults to HEAD. */ const struct object_id *oid; + /* + * The commit to checkout/reset from when doing a two-way merge. This + * is used as one of the sides to merge. + */ + const struct object_id *oid_from; /* * Optional value to set ORIG_HEAD. Defaults to HEAD. */