Skip to content

Commit

Permalink
builtin-am: invoke applypatch-msg hook
Browse files Browse the repository at this point in the history
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 <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Paul Tan authored and Junio C Hamano committed Aug 5, 2015
1 parent 88b291f commit b8803d8
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions builtin/am.c
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,27 @@ static void am_destroy(const struct am_state *state)
strbuf_release(&sb);
}

/**
* 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.
*/
Expand Down Expand Up @@ -1420,6 +1441,9 @@ static void am_run(struct am_state *state, int resume)
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);
Expand Down

0 comments on commit b8803d8

Please sign in to comment.