From: Thomas Rast Date: Sun, 28 Mar 2010 19:36:00 +0000 (+0200) Subject: rebase -i: make post-rewrite work for 'edit' X-Git-Tag: v1.7.1-rc0~39 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=0acb62f202617cc58b6b4039dc9c7ad955ef0c88;p=git.git 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 Signed-off-by: Junio C Hamano --- diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 415ae72db..8a2771f1f 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -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" @@ -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 ;; diff --git a/t/t5407-post-rewrite-hook.sh b/t/t5407-post-rewrite-hook.sh index f0f91f149..552da65a6 100755 --- a/t/t5407-post-rewrite-hook.sh +++ b/t/t5407-post-rewrite-hook.sh @@ -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 <