Skip to content

Commit

Permalink
rebase -i: make post-rewrite work for 'edit'
Browse files Browse the repository at this point in the history
The post-rewrite support, in the form of the call to
'record_in_rewritten', was hidden in the arm where we have to record a
new commit for the user.  This meant that it was never invoked in the
case where the user has already amended the commit by herself.

[The test is designed to exercise both arms of the 'if' in question.]

Furthermore, recording the stopped-sha (the SHA1 of the commit before
the editing) suffered from a cut&paste error from die_with_patch and
used the wrong variable, hence it never recorded anything.

Noticed by Junio.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Thomas Rast authored and Junio C Hamano committed Mar 29, 2010
1 parent faf7526 commit 0acb62f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions git-rebase--interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ do_next () {
mark_action_done
pick_one $sha1 ||
die_with_patch $sha1 "Could not apply $sha1... $rest"
echo "$1" > "$DOTEST"/stopped-sha
echo "$sha1" > "$DOTEST"/stopped-sha
make_patch $sha1
git rev-parse --verify HEAD > "$AMEND"
warn "Stopped at $sha1... $rest"
Expand Down Expand Up @@ -732,9 +732,10 @@ first and then run 'git rebase --continue' again."
test -n "$amend" && git reset --soft $amend
die "Could not commit staged changes."
}
record_in_rewritten "$(cat "$DOTEST"/stopped-sha)"
fi

record_in_rewritten "$(cat "$DOTEST"/stopped-sha)"

require_clean_work_tree
do_rest
;;
Expand Down
16 changes: 16 additions & 0 deletions t/t5407-post-rewrite-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -180,4 +180,20 @@ EOF
verify_hook_input
'

test_expect_success 'git rebase -i (double edit)' '
git reset --hard D &&
clear_hook_input &&
FAKE_LINES="edit 1 edit 2" git rebase -i B &&
git rebase --continue &&
echo something > foo &&
git add foo &&
git rebase --continue &&
echo rebase >expected.args &&
cat >expected.data <<EOF &&
$(git rev-parse C) $(git rev-parse HEAD^)
$(git rev-parse D) $(git rev-parse HEAD)
EOF
verify_hook_input
'

test_done

0 comments on commit 0acb62f

Please sign in to comment.