rebase -i: fix interrupted squashing
When a squashing merge failed, the first commit would not be replaced, due to "git reset --soft" being called with an unmerged index. Noticed by Uwe Kleine-König. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
7ab3cc70a6
commit
fb47cfbd59
|
@ -260,8 +260,8 @@ do_next () {
|
||||||
esac
|
esac
|
||||||
|
|
||||||
failed=f
|
failed=f
|
||||||
pick_one -n $sha1 || failed=t
|
|
||||||
output git reset --soft HEAD^
|
output git reset --soft HEAD^
|
||||||
|
pick_one -n $sha1 || failed=t
|
||||||
author_script=$(get_author_ident_from_commit $sha1)
|
author_script=$(get_author_ident_from_commit $sha1)
|
||||||
echo "$author_script" > "$DOTEST"/author-script
|
echo "$author_script" > "$DOTEST"/author-script
|
||||||
case $failed in
|
case $failed in
|
||||||
|
|
|
@ -221,4 +221,34 @@ test_expect_success 'multi-squash only fires up editor once' '
|
||||||
test 1 = $(git show | grep ONCE | wc -l)
|
test 1 = $(git show | grep ONCE | wc -l)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'squash works as expected' '
|
||||||
|
for n in one two three four
|
||||||
|
do
|
||||||
|
echo $n >> file$n &&
|
||||||
|
git add file$n &&
|
||||||
|
git commit -m $n
|
||||||
|
done &&
|
||||||
|
one=$(git rev-parse HEAD~3) &&
|
||||||
|
FAKE_LINES="1 squash 3 2" git rebase -i HEAD~3 &&
|
||||||
|
test $one = $(git rev-parse HEAD~2)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'interrupted squash works as expected' '
|
||||||
|
for n in one two three four
|
||||||
|
do
|
||||||
|
echo $n >> conflict &&
|
||||||
|
git add conflict &&
|
||||||
|
git commit -m $n
|
||||||
|
done &&
|
||||||
|
one=$(git rev-parse HEAD~3) &&
|
||||||
|
! FAKE_LINES="1 squash 3 2" git rebase -i HEAD~3 &&
|
||||||
|
(echo one; echo two; echo four) > conflict &&
|
||||||
|
git add conflict &&
|
||||||
|
! git rebase --continue &&
|
||||||
|
echo resolved > conflict &&
|
||||||
|
git add conflict &&
|
||||||
|
git rebase --continue &&
|
||||||
|
test $one = $(git rev-parse HEAD~2)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue