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
parent
bb64507164
commit
a4f25e3682
|
@ -219,15 +219,19 @@ pick_one_preserving_merges () {
|
||||||
die "Cannot fast forward to $sha1"
|
die "Cannot fast forward to $sha1"
|
||||||
;;
|
;;
|
||||||
f)
|
f)
|
||||||
test "a$1" = a-n && die "Refusing to squash a merge: $sha1"
|
|
||||||
|
|
||||||
first_parent=$(expr "$new_parents" : ' \([^ ]*\)')
|
first_parent=$(expr "$new_parents" : ' \([^ ]*\)')
|
||||||
# detach HEAD to current parent
|
|
||||||
output git checkout $first_parent 2> /dev/null ||
|
if [ "$1" != "-n" ]
|
||||||
die "Cannot move HEAD to $first_parent"
|
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
|
case "$new_parents" in
|
||||||
' '*' '*)
|
' '*' '*)
|
||||||
|
test "a$1" = a-n && die "Refusing to squash a merge: $sha1"
|
||||||
|
|
||||||
# redo merge
|
# redo merge
|
||||||
author_script=$(get_author_ident_from_commit $sha1)
|
author_script=$(get_author_ident_from_commit $sha1)
|
||||||
eval "$author_script"
|
eval "$author_script"
|
||||||
|
|
Loading…
Reference in New Issue