rebase -i: make post-rewrite work for 'edit'
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>
This commit is contained in:
parent
faf752693a
commit
0acb62f202
@ -484,7 +484,7 @@ do_next () {
|
|||||||
mark_action_done
|
mark_action_done
|
||||||
pick_one $sha1 ||
|
pick_one $sha1 ||
|
||||||
die_with_patch $sha1 "Could not apply $sha1... $rest"
|
die_with_patch $sha1 "Could not apply $sha1... $rest"
|
||||||
echo "$1" > "$DOTEST"/stopped-sha
|
echo "$sha1" > "$DOTEST"/stopped-sha
|
||||||
make_patch $sha1
|
make_patch $sha1
|
||||||
git rev-parse --verify HEAD > "$AMEND"
|
git rev-parse --verify HEAD > "$AMEND"
|
||||||
warn "Stopped at $sha1... $rest"
|
warn "Stopped at $sha1... $rest"
|
||||||
@ -732,9 +732,10 @@ first and then run 'git rebase --continue' again."
|
|||||||
test -n "$amend" && git reset --soft $amend
|
test -n "$amend" && git reset --soft $amend
|
||||||
die "Could not commit staged changes."
|
die "Could not commit staged changes."
|
||||||
}
|
}
|
||||||
record_in_rewritten "$(cat "$DOTEST"/stopped-sha)"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
record_in_rewritten "$(cat "$DOTEST"/stopped-sha)"
|
||||||
|
|
||||||
require_clean_work_tree
|
require_clean_work_tree
|
||||||
do_rest
|
do_rest
|
||||||
;;
|
;;
|
||||||
|
@ -180,4 +180,20 @@ EOF
|
|||||||
verify_hook_input
|
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
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user