diff options
author | Jeff King <peff@peff.net> | 2009-08-09 06:02:51 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-08-09 12:34:21 -0700 |
commit | 69a8b7c74192dfa7bde3937d2c84324a2cd1506b (patch) | |
tree | 708d61212040df83649eb7095a88a201cac31af3 | |
parent | 751c59746c7522982214528eb653dfb61d372257 (diff) | |
download | git-69a8b7c74192dfa7bde3937d2c84324a2cd1506b.tar.gz git-69a8b7c74192dfa7bde3937d2c84324a2cd1506b.tar.xz |
merge: indicate remote tracking branches in merge message
Previously when merging directly from a local tracking
branch like:
git merge origin/master
The merge message said:
Merge commit 'origin/master'
* commit 'origin/master':
...
Instead, let's be more explicit about what we are merging:
Merge remote branch 'origin/master'
* origin/master:
...
We accomplish this by recognizing remote tracking branches
in git-merge when we build the simulated FETCH_HEAD output
that we feed to fmt-merge-msg.
In addition to a new test in t7608, we have to tweak the
expected output of t3409, which does such a merge.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-merge.c | 5 | ||||
-rwxr-xr-x | t/t3409-rebase-preserve-merges.sh | 2 | ||||
-rwxr-xr-x | t/t7608-merge-messages.sh | 10 |
3 files changed, 16 insertions, 1 deletions
diff --git a/builtin-merge.c b/builtin-merge.c index f7db14846..f4de73fa9 100644 --- a/builtin-merge.c +++ b/builtin-merge.c @@ -375,6 +375,11 @@ static void merge_name(const char *remote, struct strbuf *msg) sha1_to_hex(branch_head), remote); goto cleanup; } + if (!prefixcmp(found_ref, "refs/remotes/")) { + strbuf_addf(msg, "%s\t\tremote branch '%s' of .\n", + sha1_to_hex(branch_head), remote); + goto cleanup; + } } /* See if remote matches <name>^^^.. or <name>~<number> */ diff --git a/t/t3409-rebase-preserve-merges.sh b/t/t3409-rebase-preserve-merges.sh index e6c832780..297d16547 100755 --- a/t/t3409-rebase-preserve-merges.sh +++ b/t/t3409-rebase-preserve-merges.sh @@ -71,7 +71,7 @@ test_expect_success 'rebase -p fakes interactive rebase' ' git fetch && git rebase -p origin/topic && test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) && - test 1 = $(git rev-list --all --pretty=oneline | grep "Merge commit" | wc -l) + test 1 = $(git rev-list --all --pretty=oneline | grep "Merge remote branch " | wc -l) ) ' diff --git a/t/t7608-merge-messages.sh b/t/t7608-merge-messages.sh index 81ced8ac3..28d56797b 100755 --- a/t/t7608-merge-messages.sh +++ b/t/t7608-merge-messages.sh @@ -47,4 +47,14 @@ test_expect_success 'ambiguous tag' ' check_oneline "Merge commit QambiguousQ" ' +test_expect_success 'remote branch' ' + git checkout -b remote master && + test_commit remote-1 && + git update-ref refs/remotes/origin/master remote && + git checkout master && + test_commit master-5 && + git merge origin/master && + check_oneline "Merge remote branch Qorigin/masterQ" +' + test_done |