From 274a5c06d525da8c9720ae60454fba6779523c52 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 7 Nov 2011 14:45:10 -0800 Subject: [PATCH] merge: record tag objects without peeling in MERGE_HEAD Otherwise, "git commit" wouldn't have a way to tell that we were in the middle of merging an annotated or signed tag, not a plain commit, after "git merge" stops to ask the user to resolve conflicts. Signed-off-by: Junio C Hamano --- builtin/merge.c | 13 ++++++++++--- t/t7600-merge.sh | 6 +++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/builtin/merge.c b/builtin/merge.c index 8d4eb4e42..7158e8e2d 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -1045,9 +1045,16 @@ static void write_merge_state(void) struct commit_list *j; struct strbuf buf = STRBUF_INIT; - for (j = remoteheads; j; j = j->next) - strbuf_addf(&buf, "%s\n", - sha1_to_hex(j->item->object.sha1)); + for (j = remoteheads; j; j = j->next) { + unsigned const char *sha1; + struct commit *c = j->item; + if (c->util && merge_remote_util(c)->obj) { + sha1 = merge_remote_util(c)->obj->sha1; + } else { + sha1 = c->object.sha1; + } + strbuf_addf(&buf, "%s\n", sha1_to_hex(sha1)); + } fd = open(git_path("MERGE_HEAD"), O_WRONLY | O_CREAT, 0666); if (fd < 0) die_errno(_("Could not open '%s' for writing"), diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index b91d022bc..5d8c42854 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -96,7 +96,11 @@ verify_parents () { verify_mergeheads () { printf '%s\n' "$@" >mergehead.expected && - test_cmp mergehead.expected .git/MERGE_HEAD + while read sha1 rest + do + git rev-parse $sha1 + done <.git/MERGE_HEAD >mergehead.actual && + test_cmp mergehead.expected mergehead.actual } verify_no_mergehead () { -- 2.30.2