git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v9 11/11] Documentation: add documentation for 'git interpret-trailers'

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 7, 2014, 22:00 UTC
Message-ID
<xmqqr458ls0k.fsf@gitster.dls.corp.google.com>
In-Reply-To
<20140407.205800.839733420387302333.chriscool@tuxfamily.org>
Christian Couder <chriscool@tuxfamily.org> writes:
Show 20 quoted lines
> From: Junio C Hamano <gitster@pobox.com>
>>
>> A different way to sell a colon, e.g.
>> 
>>     Consider the instruction sed takes on its command line.
>>     (e.g. "sed 's/frotz/nitfol/' <xyzzy").  In the most general
>>     form, you would always give it as the value of an '-e' option
>>     (e.g. "sed -e 's/frotz/nitfol' <xyzzy"), but you are allowed to
>>     be loose in limited occassions.  "Key:value" is like that, and
>>     in the most general form, it actually needs to be spelled as
>>     "-e 'Key:value'".
>> 
>> is possible, but I do not think it is a particularly good analogy,
>> because what you have as the alternative is "Key=value", and not
>> "-e 'Key:value'", or "--Key=value" (the last would probably be the 
>> most natural way to express this).
>
> The analogy that I would use is rather that Perl lets people use
> 's:foo:bar:' as well as 's=foo=bar=' instead of 's/foo/bar/' if they
> prefer.

I could *almost* buy that, but that does not hold as you are not allowing (and I do not think you need to in this case) the user to pick any termination character like "s|foo|bar|". The only thing you are doing is forbidding both ":" and "=" from the set of allowed characters for labels.

However.

I think we could buy the syntax if the "Key:value" form were the *only* form, *without* accepting "Key=value".

The latter is a poor attempt to pretend as if it is a normal command line option, but because that form does not even take double-dashes at the beginning, it even fails to mimic as a command line option.

It would be one way to reduce the unnecessary cognitive load from the users when learning the Git command line argument convention to reject the "key=value" form and only stick to "key: value" form. After all, because of the shape of the footer we add to the log message (i.e. a keyword label followed by a colon followed by a SP followed by the value), it is clear that we can use ":" as the separator without inconveniencing the users who want to use some unusual characters in the label part, but there is no strong reason to reject an equal sign in the label.

Previous: Junio C Hamano
Message 24 of 24 in “Add interpret-trailers builtin”
  1. 00/11 Add interpret-trailers builtinChristian Couder, Apr 1, 2014
  2. 01/11 trailer: add data structures and basic functionsChristian Couder, Apr 1, 2014
  3. 02/11 trailer: process trailers from stdin and argumentsChristian Couder, Apr 1, 2014
  4. 03/11 trailer: read and process config informationChristian Couder, Apr 1, 2014
  5. 04/11 trailer: process command line trailer argumentsChristian Couder, Apr 1, 2014
  6. 05/11 trailer: parse trailers from stdinChristian Couder, Apr 1, 2014
  7. 06/11 trailer: put all the processing together and printChristian Couder, Apr 1, 2014
  8. 07/11 trailer: add interpret-trailers commandChristian Couder, Apr 1, 2014
  9. 08/11 trailer: add tests for "git interpret-trailers"Christian Couder, Apr 1, 2014
  10. Junio C HamanoApr 1, 2014
  11. Junio C HamanoApr 1, 2014
  12. Christian CouderApr 2, 2014
  13. 09/11 trailer: execute command from 'trailer.<name>.command'Christian Couder, Apr 1, 2014
  14. 10/11 trailer: add tests for commands in config fileChristian Couder, Apr 1, 2014
  15. 11/11 Documentation: add documentation for 'git interpret-trailers'Christian Couder, Apr 1, 2014
  16. Jonathan NiederApr 2, 2014
  17. Christian CouderApr 2, 2014
  18. Junio C HamanoApr 4, 2014
  19. Junio C HamanoApr 4, 2014
  20. Christian CouderApr 7, 2014
  21. Junio C HamanoApr 7, 2014
  22. Christian CouderApr 7, 2014
  23. Junio C HamanoApr 7, 2014
  24. Junio C HamanoApr 7, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.