sequencer: allow the commit-msg hooks to run during a `reword`

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@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johannes Schindelin committed Mar 23, 2017 at 17:07 UTC b92ff6e81429c6a2636b4d6d26ab9ce5d4890fe8
2 files changed +7 -3
sequencer.c
+6 -2
@@ -606,6 +606,7 @@ N_("you have staged changes in your working tree\n"
606 #define EDIT_MSG (1<<1)
607 #define AMEND_MSG (1<<2)
608 #define CLEANUP_MSG (1<<3)
609 +#define VERIFY_MSG (1<<4)
610
611 /*
612 * 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,
643 }
644
645 argv_array_push(&cmd.args, "commit");
645 - argv_array_push(&cmd.args, "-n");
646
647 + if (!(flags & VERIFY_MSG))
648 + argv_array_push(&cmd.args, "-n");
649 if ((flags & AMEND_MSG))
650 argv_array_push(&cmd.args, "--amend");
651 if (opts->gpg_sign)
@@ -996,6 +998,8 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
998 if (res || command != TODO_REWORD)
999 goto leave;
1000 flags |= EDIT_MSG | AMEND_MSG;
1001 + if (command == TODO_REWORD)
1002 + flags |= VERIFY_MSG;
1003 msg_file = NULL;
1004 goto fast_forward_edit;
1005 }
@@ -1050,7 +1054,7 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
1054 }
1055
1056 if (command == TODO_REWORD)
1053 - flags |= EDIT_MSG;
1057 + flags |= EDIT_MSG | VERIFY_MSG;
1058 else if (is_fixup(command)) {
1059 if (update_squash_messages(command, commit, opts))
1060 return -1;
t/t7504-commit-msg-hook.sh
+1 -1
@@ -230,7 +230,7 @@ chmod +x reword-editor
230 REWORD_EDITOR="$(pwd)/reword-editor"
231 export REWORD_EDITOR
232
233 -test_expect_failure 'hook is called for reword during `rebase -i`' '
233 +test_expect_success 'hook is called for reword during `rebase -i`' '
234
235 GIT_SEQUENCE_EDITOR="\"$REWORD_EDITOR\"" git rebase -i HEAD^ &&
236 commit_msg_is "new message"