From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: <git@vger.kernel.org>
Cc: "Jeff King" <peff@peff.net>, "Duy Nguyen" <pclouds@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"Junio C Hamano" <gitster@pobox.com>,
"Johannes Sixt" <j6t@kdbg.org>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
"Jonathan Nieder" <jrnieder@gmail.com>
Subject: [PATCH v2 0/7] Multiple hook support
Date: Tue, 14 May 2019 00:23:24 +0000 [thread overview]
Message-ID: <20190514002332.121089-1-sandals@crustytoothpaste.net> (raw)
This series introduces multiple hook support.
I've thought a lot about the discussion over whether this series should
use the configuration as the source for multiple hooks. Ultimately, I've
come to the decision that it's not a good idea. Even adopting the empty
entry as a reset marker, the fact that inheritance in the configuration
is in-order and can't be easily modified means that it's not likely to
be very useful, but it is likely to be quite surprising for the average
user. I think a solution that sticks with the existing model and builds
off a design used by other systems people are familiar with, like cron
and run-parts, is going to be a better choice. Moreover, this is the
design that people have already built with outside tooling, which is a
further argument in favor of it.
I have adopted one configuration-based option, which is the per-hook
errorBehavior option that Peff suggested. I think this reduces concerns
over what the best error handling strategy is and is a good thing to
have as part of a minimum viable product. I picked the names that Peff
chose, but if people like different names better, they can be changed.
Just as a preview of what's coming down the line, I plan to build on
this series to notify hooks when --quiet and --dry-run options have been
specified to commands so that they may honor them if they choose.
Changes from v1:
* Adopted several improvements from Duy's series, including an improved
find_hooks prototype and a helper function.
* Switched to existence checks instead of executability checks for
determining whether to invoke multiple hooks.
* Adjusted the commit message for patch 3.
* Added error behavior control using the names Peff provided in his
comment.
* Added documentation.
brian m. carlson (7):
run-command: add preliminary support for multiple hooks
builtin/receive-pack: add support for multiple hooks
rebase: add support for multiple hooks
builtin/worktree: add support for multiple post-checkout hooks
transport: add support for multiple pre-push hooks
config: allow configuration of multiple hook error behavior
docs: document multiple hooks
Documentation/config.txt | 2 +
Documentation/config/hook.txt | 19 ++
Documentation/githooks.txt | 9 +
builtin/am.c | 20 +--
builtin/commit.c | 2 +-
builtin/receive-pack.c | 78 ++++----
builtin/worktree.c | 44 +++--
config.c | 27 +++
run-command.c | 175 +++++++++++++++---
run-command.h | 22 ++-
sequencer.c | 59 ++++---
sequencer.h | 2 +
t/lib-hooks.sh | 274 +++++++++++++++++++++++++++++
t/t5403-post-checkout-hook.sh | 8 +
t/t5407-post-rewrite-hook.sh | 15 ++
t/t5516-fetch-push.sh | 30 ++++
t/t5571-pre-push-hook.sh | 19 ++
t/t7503-pre-commit-hook.sh | 15 ++
t/t7505-prepare-commit-msg-hook.sh | 9 +
transport.c | 29 +--
20 files changed, 730 insertions(+), 128 deletions(-)
create mode 100644 Documentation/config/hook.txt
create mode 100644 t/lib-hooks.sh
next reply other threads:[~2019-05-14 0:23 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-14 0:23 brian m. carlson [this message]
2019-05-14 0:23 ` [PATCH v2 1/7] run-command: add preliminary support for multiple hooks brian m. carlson
2019-05-14 12:46 ` Duy Nguyen
2019-05-15 22:27 ` brian m. carlson
2019-05-29 2:18 ` brian m. carlson
2019-05-14 15:12 ` Johannes Schindelin
2019-05-15 22:44 ` brian m. carlson
2019-05-16 19:11 ` Johannes Sixt
2019-05-17 20:31 ` Johannes Schindelin
2019-05-14 0:23 ` [PATCH v2 2/7] builtin/receive-pack: add " brian m. carlson
2019-05-14 0:23 ` [PATCH v2 3/7] rebase: " brian m. carlson
2019-05-14 12:56 ` Duy Nguyen
2019-05-14 17:58 ` Johannes Sixt
2019-05-15 22:55 ` brian m. carlson
2019-05-16 10:29 ` Duy Nguyen
2019-05-14 0:23 ` [PATCH v2 3/7] sequencer: " brian m. carlson
2019-05-14 0:23 ` [PATCH v2 4/7] builtin/worktree: add support for multiple post-checkout hooks brian m. carlson
2019-05-14 0:23 ` [PATCH v2 5/7] transport: add support for multiple pre-push hooks brian m. carlson
2019-05-14 0:23 ` [PATCH v2 6/7] config: allow configuration of multiple hook error behavior brian m. carlson
2019-05-14 13:20 ` Duy Nguyen
2019-05-15 23:10 ` brian m. carlson
2019-05-16 5:08 ` Jeff King
2019-05-16 5:02 ` Jeff King
2019-05-16 17:19 ` brian m. carlson
2019-05-16 21:52 ` Jeff King
2019-05-14 0:23 ` [PATCH v2 7/7] docs: document multiple hooks brian m. carlson
2019-05-14 13:38 ` Duy Nguyen
2019-05-14 0:51 ` [PATCH v2 0/7] Multiple hook support Jonathan Nieder
2019-05-14 1:59 ` brian m. carlson
2019-05-14 2:26 ` Jonathan Nieder
2019-05-16 0:42 ` brian m. carlson
2019-05-16 0:51 ` Jonathan Nieder
2019-05-16 4:51 ` Jeff King
2019-05-14 13:30 ` Duy Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190514002332.121089-1-sandals@crustytoothpaste.net \
--to=sandals@crustytoothpaste.net \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j6t@kdbg.org \
--cc=jrnieder@gmail.com \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.