[PATCH 01/24] merge: do not mistake (ancestor of) tag for branch
From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:49:19
Subsystem:
the rest · Maintainer:
Linus Torvalds
If no branch 'foo' exists but a tag 'foo' does, then git merge foo^ results in Merge branch 'foo' (early part) as a commit message, because the relevant code path checks that refs/heads/foo is a valid refname for writing rather than for reading. Signed-off-by: Jonathan Nieder <redacted> --- builtin/merge.c | 2 +- t/t7600-merge.sh | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index b836e9c..f285b7e 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c@@ -437,7 +437,7 @@ static void merge_name(const char *remote, struct strbuf *msg) strbuf_addstr(&truname, "refs/heads/"); strbuf_addstr(&truname, remote); strbuf_setlen(&truname, truname.len - len); - if (resolve_ref(truname.buf, buf_sha, 0, NULL)) { + if (resolve_ref(truname.buf, buf_sha, 1, NULL)) { strbuf_addf(msg, "%s\t\tbranch '%s'%s of .\n", sha1_to_hex(remote_head->sha1),
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index cde8390..16e5ba1 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh@@ -558,8 +558,11 @@ test_expect_success 'refresh the index before merging' ' git merge c3 ' -cat >expected <<EOF -Merge branch 'c5' (early part) +cat >expected.branch <<\EOF +Merge branch 'c5-branch' (early part) +EOF +cat >expected.tag <<\EOF +Merge commit 'c5~1' EOF test_expect_success 'merge early part of c2' '
@@ -577,9 +580,14 @@ test_expect_success 'merge early part of c2' ' git add c6.c && git commit -m c6 && git tag c6 && + git branch -f c5-branch c5 && + git merge c5-branch~1 && + git show -s --pretty=format:%s HEAD >actual.branch && + git reset --keep HEAD^ && git merge c5~1 && - git show -s --pretty=format:%s HEAD > actual && - test_cmp actual expected + git show -s --pretty=format:%s HEAD >actual.tag && + test_cmp expected.branch actual.branch && + test_cmp expected.tag actual.tag ' test_debug 'gitk --all'
--
1.7.2.1.544.ga752d.dirty