Browse Source

rebase-i-p: fix 'no squashing merges' tripping up non-merges

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>
maint
Stephen Haberman 16 years ago committed by Junio C Hamano
parent
commit
a4f25e3682
  1. 14
      git-rebase--interactive.sh

14
git-rebase--interactive.sh

@ -219,15 +219,19 @@ pick_one_preserving_merges () { @@ -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"

Loading…
Cancel
Save