Derrick Stolee <stolee@xxxxxxxxx> writes: >> As you suggested in a part of your response I omitted, we can >> annotate <mode> to give hints on the valid choices to help users, >> without changing the default behaviour. I am personally fine either >> way, as long as we clearly document the reasoning behind our design. > > I'll create a new patch on top of the current series version that > does this, calling it out as an intentional pattern. It's previously > been used by these examples: > > * --fixup=[(amend|reword):]<commit> > * --diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]] > * --tool=[g,n,]vimdiff > * --exclude-hidden=[fetch|receive|uploadpack] Yup, these are good things to have in "git cmd -h" to help users jog their memory what the available choices are. We do not have to always verbosely explain what these mean everywhere, of course, but if we said in "git commit -h" something like --fixup=<choice> that would be almost hostile to the users. And in documentation pages, of course we can describe what each of the available choices mean. > One place where this kind of notation could be helpful, but appears > to be absent, is the '-L(<n>:<m>)|(:<method>):<file>' argument for > 'git log' and 'git rev-list'. Perhaps this is too dense, though, so > it would be better split into '-L<n>:<m>:<file>' and > '-L:<method>:<file>'. Yup.