Skip to content

Commit

Permalink
merge: do not mistake (ancestor of) tag for branch
Browse files Browse the repository at this point in the history
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 <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Aug 18, 2010
1 parent 64fdc08 commit b81f925
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
2 changes: 1 addition & 1 deletion builtin/merge.c
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
16 changes: 12 additions & 4 deletions t/t7600-merge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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' '
Expand All @@ -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'
Expand Down

0 comments on commit b81f925

Please sign in to comment.