On Wed, Apr 15, 2020 at 07:51:14AM -0700, Junio C Hamano wrote: > > Phillip Wood <phillip.wood123@xxxxxxxxx> 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