diff options
-rw-r--r-- | builtin-merge.c | 15 | ||||
-rwxr-xr-x | t/t4202-log.sh | 4 | ||||
-rwxr-xr-x | t/t7608-merge-messages.sh | 2 |
3 files changed, 10 insertions, 11 deletions
diff --git a/builtin-merge.c b/builtin-merge.c index 82b546689c..f7db14846e 100644 --- a/builtin-merge.c +++ b/builtin-merge.c @@ -358,6 +358,7 @@ static void merge_name(const char *remote, struct strbuf *msg) struct strbuf buf = STRBUF_INIT; struct strbuf bname = STRBUF_INIT; const char *ptr; + char *found_ref; int len, early; strbuf_branchname(&bname, remote); @@ -368,14 +369,12 @@ static void merge_name(const char *remote, struct strbuf *msg) if (!remote_head) die("'%s' does not point to a commit", remote); - strbuf_addstr(&buf, "refs/heads/"); - strbuf_addstr(&buf, remote); - resolve_ref(buf.buf, branch_head, 0, NULL); - - if (!hashcmp(remote_head->sha1, branch_head)) { - strbuf_addf(msg, "%s\t\tbranch '%s' of .\n", - sha1_to_hex(branch_head), remote); - goto cleanup; + if (dwim_ref(remote, strlen(remote), branch_head, &found_ref) > 0) { + if (!prefixcmp(found_ref, "refs/heads/")) { + strbuf_addf(msg, "%s\t\tbranch '%s' of .\n", + sha1_to_hex(branch_head), remote); + goto cleanup; + } } /* See if remote matches <name>^^^.. or <name>~<number> */ diff --git a/t/t4202-log.sh b/t/t4202-log.sh index 48e0088b47..1e952ca55b 100755 --- a/t/t4202-log.sh +++ b/t/t4202-log.sh @@ -320,11 +320,11 @@ test_expect_success 'set up more tangled history' ' ' cat > expect <<\EOF -* Merge branch 'reach' +* Merge commit 'reach' |\ | \ | \ -*-. \ Merge branches 'octopus-a' and 'octopus-b' +*-. \ Merge commit 'octopus-a'; commit 'octopus-b' |\ \ \ * | | | seventh | | * | octopus-b diff --git a/t/t7608-merge-messages.sh b/t/t7608-merge-messages.sh index 9d10583916..81ced8ac3c 100755 --- a/t/t7608-merge-messages.sh +++ b/t/t7608-merge-messages.sh @@ -38,7 +38,7 @@ test_expect_success 'merge tag' ' check_oneline "Merge commit Qtag-1Q" ' -test_expect_failure 'ambiguous tag' ' +test_expect_success 'ambiguous tag' ' git checkout -b ambiguous master && test_commit ambiguous && git checkout master && |