]> git.ipfire.org Git - thirdparty/git.git/commit - command-list.txt
hook: add 'run' subcommand
authorEmily Shaffer <emilyshaffer@google.com>
Wed, 22 Dec 2021 03:59:27 +0000 (04:59 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Jan 2022 23:19:34 +0000 (15:19 -0800)
commit96e7225b310cb45a9b1198fb7bb1621e638e3329
tree549a837a3969d4c60c1bf5b03919d56a56211b66
parent597af311a2899bfd6640b9b107622c5795d5f998
hook: add 'run' subcommand

In order to enable hooks to be run as an external process, by a
standalone Git command, or by tools which wrap Git, provide an external
means to run all configured hook commands for a given hook event.

Most of our hooks require more complex functionality than this, but
let's start with the bare minimum required to support our simplest
hooks.

In terms of implementation the usage_with_options() and "goto usage"
pattern here mirrors that of
builtin/{commit-graph,multi-pack-index}.c.

Some of the implementation here, such as a function being named
run_hooks_opt() when it's tasked with running one hook, to using the
run_processes_parallel_tr2() API to run with jobs=1 is somewhere
between a bit odd and and an overkill for the current features of this
"hook run" command and the hook.[ch] API.

This code will eventually be able to run multiple hooks declared in
config in parallel, by starting out with these names and APIs we
reduce the later churn of renaming functions, switching from the
run_command() to run_processes_parallel_tr2() API etc.

Signed-off-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Acked-by: Emily Shaffer <emilyshaffer@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
.gitignore
Documentation/git-hook.txt [new file with mode: 0644]
Documentation/githooks.txt
Makefile
builtin.h
builtin/hook.c [new file with mode: 0644]
command-list.txt
git.c
hook.c
hook.h
t/t1800-hook.sh [new file with mode: 0755]