Hi folks, and thanks for the patience - I ran into many, many last-mile challenges. I haven't addressed many comments on the design doc yet - I was keen to get the "functionally complete" implementation and conversion to the list. Next on my plate: - Update the design doc to make sense with what's in the implementation. - A blog post! How to set up new hooks, why they're neat, etc. - We seem to have some Googlers interested in trying it out internally, so I'm hoping we'll gather and collate feedback from that soon too. - And of course addressing comments on this series. Thanks! - Emily Emily Shaffer (17): doc: propose hooks managed by the config hook: scaffolding for git-hook subcommand hook: add list command hook: include hookdir hook in list hook: respect hook.runHookDir hook: implement hookcmd.<name>.skip parse-options: parse into strvec hook: add 'run' subcommand hook: replace find_hook() with hook_exists() hook: support passing stdin to hooks run-command: allow stdin for run_processes_parallel hook: allow parallel hook execution hook: allow specifying working directory for hooks run-command: add stdin callback for parallelization hook: provide stdin by string_list or callback run-command: allow capturing of collated output hooks: allow callers to capture output .gitignore | 1 + Documentation/Makefile | 1 + Documentation/config/hook.txt | 19 + Documentation/git-hook.txt | 118 +++++ Documentation/technical/api-parse-options.txt | 5 + .../technical/config-based-hooks.txt | 367 +++++++++++++++ Makefile | 2 + builtin.h | 1 + builtin/bugreport.c | 4 +- builtin/fetch.c | 1 + builtin/hook.c | 174 ++++++++ builtin/submodule--helper.c | 2 +- git.c | 1 + hook.c | 417 ++++++++++++++++++ hook.h | 154 +++++++ parse-options-cb.c | 16 + parse-options.h | 4 + run-command.c | 85 +++- run-command.h | 31 ++ submodule.c | 1 + t/helper/test-run-command.c | 46 +- t/t0061-run-command.sh | 37 ++ t/t1360-config-based-hooks.sh | 256 +++++++++++ 23 files changed, 1728 insertions(+), 15 deletions(-) create mode 100644 Documentation/config/hook.txt create mode 100644 Documentation/git-hook.txt create mode 100644 Documentation/technical/config-based-hooks.txt create mode 100644 builtin/hook.c create mode 100644 hook.c create mode 100644 hook.h create mode 100755 t/t1360-config-based-hooks.sh -- 2.28.0.rc0.142.g3c755180ce-goog