[PATCH v4 34/44] builtin-am: invoke applypatch-msg hook
From: Paul Tan <hidden>
Date: 2016-06-15 23:05:34
Subsystem:
the rest · Maintainer:
Linus Torvalds
Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07),
git-am.sh will invoke the applypatch-msg hooks just after extracting the
patch message. If the applypatch-msg hook exits with a non-zero status,
git-am.sh abort before even applying the patch to the index.
Re-implement this in builtin/am.c.
Signed-off-by: Paul Tan <redacted>
---
Notes:
No tests in master.
builtin/am.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/builtin/am.c b/builtin/am.c
index f618ff1..814a8b7 100644
--- a/builtin/am.c
+++ b/builtin/am.c@@ -496,6 +496,27 @@ static void am_destroy(const struct am_state *state) } /** + * Runs applypatch-msg hook. Returns its exit code. + */ +static int run_applypatch_msg_hook(struct am_state *state) +{ + int ret; + + assert(state->msg); + ret = run_hook_le(NULL, "applypatch-msg", am_path(state, "final-commit"), NULL); + + if (!ret) { + free(state->msg); + state->msg = NULL; + if (read_commit_msg(state) < 0) + die(_("'%s' was deleted by the applypatch-msg hook"), + am_path(state, "final-commit")); + } + + return ret; +} + +/** * Runs post-rewrite hook. Returns it exit code. */ static int run_post_rewrite_hook(const struct am_state *state)
@@ -1439,6 +1460,9 @@ static void am_run(struct am_state *state) write_author_script(state); write_commit_msg(state); + if (run_applypatch_msg_hook(state)) + exit(1); + say(state, stdout, _("Applying: %.*s"), linelen(state->msg), state->msg); apply_status = run_apply(state, NULL);
--
2.5.0.rc0.76.gb2c6e93