[PATCH v4 1/2] revision: ensure MERGE_HEAD is a ref in prepare_show_merge
- From
Philippe Blain <levraiphilippeblain@gmail.com>
- Date
- Feb 10, 2024, 23:35 UTC
- Message-ID
- <20240210-ml-log-merge-with-cherry-pick-and-other-pseudo-heads-v4-1-3bc9e62808f4@gmail.com>
- In-Reply-To
- <20240210-ml-log-merge-with-cherry-pick-and-other-pseudo-heads-v4-0-3bc9e62808f4@gmail.com>
From: Michael Lohmann <mi.al.lohmann@gmail.com>
This is done to (1) ensure MERGE_HEAD is a ref, (2) obtain the oid without any prefixing by refs.c:repo_dwim_ref() (3) error out when MERGE_HEAD is a symref.
Helped-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Michael Lohmann <mi.al.lohmann@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> --- revision.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/revision.c b/revision.c index 2424c9bd67..aa4c4dc778 100644 --- a/revision.c +++ b/revision.c @@ -1973,8 +1973,12 @@ static void prepare_show_merge(struct rev_info *revs) if (repo_get_oid(the_repository, "HEAD", &oid)) die("--merge without HEAD?"); head = lookup_commit_or_die(&oid, "HEAD"); - if (repo_get_oid(the_repository, "MERGE_HEAD", &oid)) + if (read_ref_full("MERGE_HEAD", + RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE, + &oid, NULL)) die("--merge without MERGE_HEAD?"); + if (is_null_oid(&oid)) + die("MERGE_HEAD is a symbolic ref???"); other = lookup_commit_or_die(&oid, "MERGE_HEAD"); add_pending_object(revs, &head->object, "HEAD"); add_pending_object(revs, &other->object, "MERGE_HEAD");
-- 2.39.1