The `reword` command used to call `git commit` in a manner that asks for the prepare-commit-msg and commit-msg hooks to do their thing. Converting that part of the interactive rebase to C code introduced the regression where those hooks were no longer run. Let's fix this. Note: the flag is called `VERIFY_MSG` instead of the more intuitive `RUN_COMMIT_MSG_HOOKS` to indicate that the flag suppresses the `--no-verify` flag (which may do other things in the future in addition to suppressing the commit message hooks, too). Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- sequencer.c | 12 +++++++++--- t/t7504-commit-msg-hook.sh | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/sequencer.c b/sequencer.c index 1abe559fe86..377af91c475 100644 --- a/sequencer.c +++ b/sequencer.c @@ -606,6 +606,7 @@ N_("you have staged changes in your working tree\n" #define EDIT_MSG (1<<1) #define AMEND_MSG (1<<2) #define CLEANUP_MSG (1<<3) +#define VERIFY_MSG (1<<4) /* * If we are cherry-pick, and if the merge did not result in @@ -642,8 +643,9 @@ static int run_git_commit(const char *defmsg, struct replay_opts *opts, } argv_array_push(&cmd.args, "commit"); - argv_array_push(&cmd.args, "-n"); + if (!(flags & VERIFY_MSG)) + argv_array_push(&cmd.args, "-n"); if ((flags & AMEND_MSG)) argv_array_push(&cmd.args, "--amend"); if (opts->gpg_sign) @@ -993,7 +995,11 @@ static int do_pick_commit(enum todo_command command, struct commit *commit, write_author_script(msg.message); res = fast_forward_to(commit->object.oid.hash, head, unborn, opts); - if (res || command != TODO_REWORD) + if (res) + goto leave; + else if (command == TODO_REWORD) + flags |= VERIFY_MSG; + else goto leave; flags |= EDIT_MSG | AMEND_MSG; msg_file = NULL; @@ -1050,7 +1056,7 @@ static int do_pick_commit(enum todo_command command, struct commit *commit, } if (command == TODO_REWORD) - flags |= EDIT_MSG; + flags |= EDIT_MSG | VERIFY_MSG; else if (is_fixup(command)) { if (update_squash_messages(command, commit, opts)) return -1; diff --git a/t/t7504-commit-msg-hook.sh b/t/t7504-commit-msg-hook.sh index c3d9ab02a3b..88d4cda2992 100755 --- a/t/t7504-commit-msg-hook.sh +++ b/t/t7504-commit-msg-hook.sh @@ -230,7 +230,7 @@ chmod +x reword-editor REWORD_EDITOR="$(pwd)/reword-editor" export REWORD_EDITOR -test_expect_failure 'hook is called for reword during `rebase -i`' ' +test_expect_success 'hook is called for reword during `rebase -i`' ' GIT_SEQUENCE_EDITOR="\"$REWORD_EDITOR\"" git rebase -i HEAD^ && commit_msg_is "new message" -- 2.12.1.windows.1