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

Re: [PATCH] Documentation/git-stash.txt: Adjust SYNOPSIS command syntaxes

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 1, 2008, 23:26 UTC
Message-ID
<7vejbw8die.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<k5lo716v.fsf@blue.sea.net>
Jari Aalto <jari.aalto@cante.net> writes:
Show 41 quoted lines
> * Fri 2008-02-01 Jakub Narebski <jnareb@gmail.com>
> * Message-Id: m33asc94xn.fsf@localhost.localdomain
>> Jari Aalto <jari.aalto@cante.net> writes:
>>
>>> * Fri 2008-02-01 Jakub Narebski <jnareb@gmail.com>
>>> * Message-Id: m37iho9b70.fsf@localhost.localdomain
>>> >
>>> >
>>> > 'git-stash' (list | show [<stash>] | apply [<stash>] | clear)
>>> > 'git-stash' [save [<message>...]]
>>> >
>>> > Angle brackets if I understand correctly are meant to denote part
>>> > which you have to enter, the user supplied info (the reast ou have to
>>> > enter literally).
>>> 
>>> Nowhere I have seen "(" parenheses to mean "required". 
>>
>> The "(" parentheses does not mean "required". They do mean "group",
>> just like for regular expressions. So "A (B | C)" means "A B" or
>> "A C".
>
> In regexp language yes, but in describing the command syntaxes, I do not
> have come accross this. Would you have descriptive examples?
>
>>> The angle brackets are commonly used to tell that the part is to be
>>> required:
>>> 
>>>     command <option> <file ...>
>> No, the "<" angle brackets are meant to denote: substitute your own
>> (user) input, and not use as literal value. So "command <option>"
>> mean select one of options ant put it in place of "<option>"
>
> The angles primarily denote "required", and secondarily that you put
> there there the asked input.
>
>>       command (subcmd1 | subcmd2) <file ...>
>
> Tat is highly uncommon. In angle bracket notation this is unabiguous:
>
>         command <parameter1|parameter2> <file ...>
>                 A                       B

Actually, I've never seen any less-than-greater-than used to group alternates command description of traditional manual pages. So I'd say both may be unusual, but yours is a lot more unusual.

For example, GNU 'tar' uses | for alternates, but it does not mark grouping:

  SYNOPSIS
    tar  [ - ] A --catenate --concatenate | c --create | d --diff --compare
    | --delete | r --append | t --list | u --update | x --extract  --get  [
    options ] pathname [ pathname ... ]
which is horribly confusing to read.

GNU 'cpio' makes it somewhat easier to read by listing subcommands separately:

  SYNOPSIS
    cpio  {-o|--create} [-0acvABLV] [-C bytes] [-H format] [-M message] [-O
    [[user@]host:]archive]            [-F            [[user@]host:]archive]
    [--file=[[user@]host:]archive]   [--format=format]  [--message=message]
    [--null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-
    size=blocks]      [--dereference]      [--io-size=bytes]      [--quiet]
    [--force-local] [--rsh-command=command] [--help]  [--version]  <  name-
    list [> archive]
    cpio  {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes] [-E file] [-H format]
    ...
But when they have alternates, they use braces {} to group them.

Solaris 'tar' lists subcommand separately, and seems to use braces {} for grouping alternates:

  SYNOPSIS
    tar  c   [   bBeEfFhiklnopPqvwX   [  0-7  ]  ]  [ block ]  [
    tarfile ]  [ exclude-file ]  { -I include-file  |  -C direc-
    tory  | file  | file }  ...

In our manual pages, less-than-greater-than around names are very often used to mark placeholders. If you want to say zero or more files, you would typically say:

	command <file>...

Using something other than less-than-greater-than to group alternates would make things easier to differentiate. If we used braces {} it _might_ have been more similar to what other people have traditionally done.

Previous: Jari AaltoNext: Jari Aalto
Message 6 of 19 in “Documentation/git-stash.txt: Adjust SYNOPSIS command syntaxes”
  1. Documentation/git-stash.txt: Adjust SYNOPSIS command syntaxesJari Aalto, Feb 1, 2008
  2. Jakub NarebskiFeb 1, 2008
  3. Jari AaltoFeb 1, 2008
  4. Jakub NarebskiFeb 1, 2008
  5. Jari AaltoFeb 1, 2008
  6. Junio C HamanoFeb 1, 2008
  7. Jari AaltoFeb 2, 2008
  8. Jari AaltoFeb 2, 2008
  9. Jakub NarebskiFeb 2, 2008
  10. Jari AaltoFeb 2, 2008
  11. Jakub NarebskiFeb 2, 2008
  12. Jari AaltoFeb 2, 2008
  13. Jakub NarebskiFeb 2, 2008
  14. Jari AaltoFeb 2, 2008
  15. Jakub NarebskiFeb 2, 2008
  16. Documentation/git-stash.txt: Adjust SYNOPSIS command syntaxJari Aalto, Feb 2, 2008
  17. Junio C HamanoFeb 2, 2008
  18. Jakub NarebskiFeb 2, 2008
  19. Documentation/git-stash.txt: Adjust SYNOPSIS command syntax (2)Jari Aalto, Feb 2, 2008

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.