Re: [PATCH v3 5/9] bugreport: collect list of populated hooks
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 15, 2019, 17:40 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1912151839280.46@tvgsbejvaqbjf.bet>
- In-Reply-To
- <20191211205114.GD107889@google.com>
Hi Emily,
On Wed, 11 Dec 2019, Emily Shaffer wrote:
Show 81 quoted lines
> On Mon, Oct 28, 2019 at 03:31:36PM +0100, Johannes Schindelin wrote:
>
> > On Thu, 24 Oct 2019, Emily Shaffer wrote:
> >
> > > diff --git a/bugreport.c b/bugreport.c
> > > index afa4836ab1..9d7f44ff28 100644
> > > --- a/bugreport.c
> > > +++ b/bugreport.c
> > > @@ -103,3 +103,47 @@ void get_whitelisted_config(struct strbuf *config_info)
> > > strbuf_reset(config_info);
> > > strbuf_addbuf(config_info, &configs_and_values);
> > > }
> > > +
> > > +void get_populated_hooks(struct strbuf *hook_info)
> > > +{
> > > + /*
> > > + * Doesn't look like there is a list of all possible hooks; so below is
> > > + * a transcription of `git help hook`.
> > > + */
> > > + const char *hooks = "applypatch-msg,"
> > > + "pre-applypatch,"
> > > + "post-applypatch,"
> > > + "pre-commit,"
> > > + "pre-merge-commit,"
> > > + "prepare-commit-msg,"
> > > + "commit-msg,"
> > > + "post-commit,"
> > > + "pre-rebase,"
> > > + "post-checkout,"
> > > + "post-merge,"
> > > + "pre-push,"
> > > + "pre-receive,"
> > > + "update,"
> > > + "post-receive,"
> > > + "post-update,"
> > > + "push-to-checkout,"
> > > + "pre-auto-gc,"
> > > + "post-rewrite,"
> > > + "sendemail-validate,"
> > > + "fsmonitor-watchman,"
> > > + "p4-pre-submit,"
> > > + "post-index-changex";
> >
> > Well, this is disappointing: I tried to come up with a scripted way to
> > extract the commit names from our source code, and I failed! This is
> > where I gave up:
> >
> > git grep run_hook |
> > sed -n 's/.*run_hook[^(]*([^,]*, *\([^,]*\).*/\1/p' |
> > sed -e '/^name$/d' -e '/^const char \*name$/d' \
> > -e 's/push_to_checkout_hook/"push-to-checkout"/' |
> > sort |
> > uniq
> >
> > This prints only the following hook names:
> >
> > "applypatch-msg"
> > "post-applypatch"
> > "post-checkout"
> > "post-index-change"
> > "post-merge"
> > "pre-applypatch"
> > "pre-auto-gc"
> > "pre-rebase"
> > "prepare-commit-msg"
> > "push-to-checkout"
> >
> > But at least it was easy to script the extracting from the
> > Documentation:
> >
> > sed -n '/^[a-z]/{N;/\n~~~/{s/\n.*//;p}}' \
> > Documentation/githooks.txt
> >
>
> To be totally frank, I'm not keen on spending a lot of time with
> scripting this. My parallel work with config-based hooks will also
> involve an in-code source of truth for available hooknames; I'd like to
> punt on some scripting, putting it in the makefile, etc blah since I
> know I'm planning to fix this particular annoyance at the source - and
> since it looks like bugreport will stay in the review phase for at least
> a little longer.Fair enough, especially if it addresses my complaint about the scriptability.
Ciao, Dscho