Skip to content

Commit

Permalink
rebase -i: fix interrupted squashing
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Jul 27, 2007
1 parent 7ab3cc7 commit fb47cfb
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion git-rebase--interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -260,8 +260,8 @@ do_next () {
esac

failed=f
pick_one -n $sha1 || failed=t
output git reset --soft HEAD^
pick_one -n $sha1 || failed=t
author_script=$(get_author_ident_from_commit $sha1)
echo "$author_script" > "$DOTEST"/author-script
case $failed in
Expand Down
30 changes: 30 additions & 0 deletions t/t3404-rebase-interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,34 @@ test_expect_success 'multi-squash only fires up editor once' '
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

0 comments on commit fb47cfb

Please sign in to comment.