Re: StGit hooks
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 28, 2007, 19:31 UTC
- Message-ID
- <7vfxyq5fr7.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20071128172152.GB21310@diana.vm.bytemark.co.uk>
Karl Hasselström <kha@treskal.com> writes:
Show 16 quoted lines
> On 2007-11-28 18:06:36 +0100, Andreas Ericsson wrote: > >> True, but there are ways of figuring out which branch you're on, >> using the arguments passed to the hook. >> >> The rebase hook (which is where this discussion started) gets the >> branches passed to "git rebase" as arguments. Figuring out if either >> of those branches are actually under stgit control shouldn't be >> overly tricky for one so familiar with stgit as yourself. > > No, that part is trivial. The hard part is not messing up the user's > existing hook scripts. > > If I do go ahead and do this, I have a feeling I'll be beefing up > git's hook dispatch mechanism first -- if I can get it past Junio, > obviously. :-)
I do not see a fundamental problem in a scheme like this:
* when running a hook $foo, if .git/hooks/$foo.d/. does not exist, we operate as we have always done.
* if .git/hooks/$foo.d/ exists, we readdir(3) it and run the hooks found in the order their names sort bytewise (similar to /etc/rc$n.d/).
- when the purpose of the $foo hook is to return a bool to refuse an
operation, stop at the first failure; - when the purpose of the $foo hook is to cause effect, run them all
in series.* When .git/hooks/$foo.d/ exists, there will always be "050-simple" in that directory. It checks if .git/hooks/$foo exists and sources it if it does. A custom hook that wants to run before or after it can be named NNN-mine in .git/hooks/$foo.d/, where NNN sorts earlier or later than 050 to define the execution order.
We probably would want to reserve a special exit code for the hooks run for their effects so that they can signal "I do not want you to run the remainder".