Re: [RFC PATCH v2 0/2] configuration-based hook management
- From
Emily Shaffer <emilyshaffer@google.com>
- Date
- Apr 15, 2020, 20:30 UTC
- Message-ID
- <20200415203029.GA24777@google.com>
- In-Reply-To
- <xmqqd088950d.fsf@gitster.c.googlers.com>
On Wed, Apr 15, 2020 at 07:51:14AM -0700, Junio C Hamano wrote:
Show 40 quoted lines
> > Phillip Wood <phillip.wood123@gmail.com> writes: > > >> If you want to refer to commands in ordering options (like your > >> "before"), then you'd have to refer to their names. For "my-command" > >> that's not too bad. For the longer one, it's a bit awkward. You _could_ > >> do: > >> > >> hookcmd.my-command.before = git diff --check --cached > >> > >> which is the same number of lines as yours. But I'd probably give it a > >> name, like: > >> > >> hookcmd.check-whitespace.command = git diff --check --cached > >> hookcmd.my-command.before = check-whitespace > >> > >> That's one more line than yours, but I think it separates the concerns > >> more clearly. And it extends naturally to more options specific to > >> check-whitespace. > > > > I agree that using a name rather than the command line makes things > > clearer here > > True. > > These ways call for a different attitude to deal with errors > compared to the approach to order them with numbers, though. > > If your approach is to order by number attached to each hook, only > possible errors you'd need to worry about are (1) what to do when > the user forgets to give a number to a hook and (2) what to do when > the user gives the same number by accident to multiple hooks, and > both can even be made non-errors by declaring that an unnumbered > hook has a default number, and that two hooks with the same number > execute in an unspecified and unstable order. > > On the other hand, the approach to specify relative ordering among > hooks can break more easily. E.g. when a hook that used to be > before "my-command" got removed. It is harder to find a "sensible" > default behaviour for such situations.
To be clear, the examples listed (both numbered order and relational order) were more for illustration purposes. At the contributor summit, I think Peff's suggestion was to stick with config ordering until we discover something more robust is needed, which is fine by me. At that time, I don't see a problem with doing something like:
[hook] ordering = numerical
[hookcmd "my-command"] command = ~/my-command.sh order = 001
(which means others can still rely on config ordering if they want.)
Or, to put it another way, I don't think we need to solve the config ordering problem today - as long as we don't make it impossible for us to change tomorrow :)
- Emily