rebase-i: keep old parents when preserving merges
authorStephan Beyer <s-beyer@gmx.net>
Wed, 16 Jul 2008 01:51:49 +0000 (03:51 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 16 Jul 2008 22:13:53 +0000 (15:13 -0700)
When "rebase -i -p" tries to preserve merges of unrelated branches, it
lost some parents:

 - When you have more than two parents, the commit in the new history
   ends up with fewer than expected number of parents and this breakage
   goes unnoticed;

 - When you are rebasing a merge with two parents and one is lost, the
   command tries to cherry-pick the original merge commit, and the command
   fails.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-rebase--interactive.sh

index a64d9d57ab5943ac4e065866ce0ccd7de5364a9a..e3f65bd8808112aebf98f554bd24df38a5e6408c 100755 (executable)
@@ -162,6 +162,8 @@ pick_one_preserving_merges () {
                                new_parents="$new_parents $new_p"
                                ;;
                        esac
+               else
+                       new_parents="$new_parents $p"
                fi
        done
        case $fast_forward in