From 0acb62f202617cc58b6b4039dc9c7ad955ef0c88 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Sun, 28 Mar 2010 21:36:00 +0200 Subject: [PATCH] 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 --- git-rebase--interactive.sh | 5 +++-- t/t5407-post-rewrite-hook.sh | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) 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 <