diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-05-06 10:50:00 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-05-06 10:50:00 -0700 |
commit | 9fdc1cc872308869d76665be55367eef48f05ff6 (patch) | |
tree | c8d6a72151878f81e001775dbd383584f059b4ce | |
parent | 76f4f74a444cdb3d43950c099da60e5d1ad36305 (diff) | |
parent | c192f9c865dbdae48c0400d717581d34cd315fb8 (diff) | |
download | git-9fdc1cc872308869d76665be55367eef48f05ff6.tar.gz |
Merge branch 'aw/maint-rebase-i-p-no-ff'
* aw/maint-rebase-i-p-no-ff:
git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff
Conflicts:
git-rebase--interactive.sh
-rw-r--r-- | git-rebase--interactive.sh | 2 | ||||
-rwxr-xr-x | t/t3409-rebase-preserve-merges.sh | 32 |
2 files changed, 32 insertions, 2 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 6566d319aa..41ba96aeb7 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -270,7 +270,7 @@ pick_one_preserving_merges () { # No point in merging the first parent, that's HEAD new_parents=${new_parents# $first_parent} if ! do_with_author output \ - git merge ${strategy:+-s $strategy} -m \ + git merge --no-ff ${strategy:+-s $strategy} -m \ "$msg_content" $new_parents then printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG diff --git a/t/t3409-rebase-preserve-merges.sh b/t/t3409-rebase-preserve-merges.sh index 19341e5ca1..08201e2331 100755 --- a/t/t3409-rebase-preserve-merges.sh +++ b/t/t3409-rebase-preserve-merges.sh @@ -27,7 +27,17 @@ export GIT_AUTHOR_EMAIL # \ # B2 <-- origin/topic # -# In both cases, 'topic' is rebased onto 'origin/topic'. +# Clone 3 (no-ff merge): +# +# A1--A2--B3 <-- origin/master +# \ +# B1------M <-- topic +# \ / +# \--A3 <-- topic2 +# \ +# B2 <-- origin/topic +# +# In all cases, 'topic' is rebased onto 'origin/topic'. test_expect_success 'setup for merge-preserving rebase' \ 'echo First > A && @@ -61,6 +71,16 @@ test_expect_success 'setup for merge-preserving rebase' \ git commit -m "Merge origin/master into topic" ) && + git clone ./. clone3 && + ( + cd clone3 && + git checkout -b topic2 origin/topic && + echo Sixth > A && + git commit -a -m "Modify A3" && + git checkout -b topic origin/topic && + git merge --no-ff topic2 + ) && + git checkout topic && echo Fourth >> B && git commit -a -m "Modify B2" @@ -93,4 +113,14 @@ test_expect_success '--continue works after a conflict' ' ) ' +test_expect_success 'rebase -p preserves no-ff merges' ' + ( + cd clone3 && + git fetch && + git rebase -p origin/topic && + test 3 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) && + test 1 = $(git rev-list --all --pretty=oneline | grep "Merge branch" | wc -l) + ) +' + test_done |