Code

rebase-i-p: fix 'no squashing merges' tripping up non-merges
authorStephen Haberman <stephen@exigencecorp.com>
Wed, 15 Oct 2008 07:44:37 +0000 (02:44 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2008 16:23:53 +0000 (09:23 -0700)
Also only check out the first parent if this commit if not a squash--if it is a
squash, we want to explicitly ignore the parent and leave the wc as is, as
cherry-pick will apply the squash on top of it.

Signed-off-by: Stephen Haberman <stephen@exigencecorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-rebase--interactive.sh

index 23cf7a5d682183a96e825a5e346f75e8e2f9b4c1..274251f697afc256e249d46376e899ec91011d85 100755 (executable)
@@ -219,15 +219,19 @@ pick_one_preserving_merges () {
                        die "Cannot fast forward to $sha1"
                ;;
        f)
-               test "a$1" = a-n && die "Refusing to squash a merge: $sha1"
-
                first_parent=$(expr "$new_parents" : ' \([^ ]*\)')
-               # detach HEAD to current parent
-               output git checkout $first_parent 2> /dev/null ||
-                       die "Cannot move HEAD to $first_parent"
+
+               if [ "$1" != "-n" ]
+               then
+                       # detach HEAD to current parent
+                       output git checkout $first_parent 2> /dev/null ||
+                               die "Cannot move HEAD to $first_parent"
+               fi
 
                case "$new_parents" in
                ' '*' '*)
+                       test "a$1" = a-n && die "Refusing to squash a merge: $sha1"
+
                        # redo merge
                        author_script=$(get_author_ident_from_commit $sha1)
                        eval "$author_script"