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

Re: doc: git-clone: Improve discoverability of --no-single-branch flag

From
D. Ben Knoble <ben.knoble@gmail.com>
Date
May 1, 2025, 18:10 UTC
Message-ID
<CALnO6CBjd=-9OZfQ_Mhq7r0Y=gXKcb5WNOT+-qPAs_LNsayi0Q@mail.gmail.com>
In-Reply-To
<xmqqcyct1mtq.fsf@gitster.g>
On Wed, Apr 30, 2025 at 3:19 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 52 quoted lines
>
> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
>
> > Many options are documented as `--[no-]`.
> >
> >     git grep --fixed-string -- '--[no-]' Documentation/ ':(exclude)Documentation/RelNotes/'
> >
> > This is explained in gitcli(7), “Enhanced Option Parser” (for some
> > commands), “Negating options”:
> >
> >        Options with long option names can be negated by prefixing
> >        --no-. For example, git branch has the option --track which is on
> >        by default. You can use --no-track to override that
> >        behaviour. The same goes for --color and --no-color.
> >
> > A concern might be that changing `--single-branch` in this way would be
> > inconsistent with the overall style.
>
> A pair of quick counts:
>
>     $ git grep -E -e '^`?--no-' Documentation/ | wc -l
>     189
>     $ git grep -E -e '^`?--\[no-\]' Documentation/ | wc -l
>     80
>
> I think we should try to unify to the following style:
>
>     `--frotz=<string>`::
>     `--no-frotz`::
>         When `--frotz` is given, the command does THIS using the
>         given argument <string> IN THIS WAY.  The default is not to
>         to THIS, unless SUCH AND SUCH CONDITION, in which case THAT
>         is used implicitly as <string>.  To disable THIS even when
>         SUCH AND SUCH CONDITION is met, use `--no-frotz`.
>
> That is:
>
>  * Both positive and negative form are given separately as a
>    headline item, so that "grep" would work well;
>
>  * The description should be unified, so that it is clear to readers
>    what happens when the positive form is given, when the negative
>    form is given, and when neither is given.
>
>  * Mark-up the text that the users MUST input literally inside a
>    pair of backquotes.
>
> Which means that existing "--[no-]opt::" heading should become two
> lines, "`--opt`::" and "`--no-opt`::".
>
> Thanks.
>

See also https://lore.kernel.org/git/xmqqjzanzy8k.fsf@gitster.g/, where I had some similar questions (and got similar answers). We also merged 4ad47d2de3 (gitcli: document that command line trumps config and env, 2025-01-16) as a result.

If I'm reading right, this suggestion differs from the previous conversation that it's worth splitting --[no-]opt into --opt/--no-opt, which might be valuable for searches of the kind Lino described.

I did eventually push beeabf89 (vim: try harder to find long options, 2025-01-19) [1] to my Dotfiles to work around the current documentation patterns. I press either `-x` or `_XXX` when searching for an option (short x, long XXX) in a manual page with those Vim keybindings, but hopefully the patterns are useful to other people. For long options, that's

/^\C\v\s*(-[^,]*,\s*)?--(\[no-\])?
[1]: https://github.com/benknoble/Dotfiles/commit/beeabf89
-- 
D. Ben Knoble
Previous: Junio C Hamano
Message 4 of 4 in “doc: git-clone: Improve discoverability of --no-single-branch flag”
  1. Lino HauptApr 30, 2025
  2. Kristoffer HaugsbakkApr 30, 2025
  3. Junio C HamanoApr 30, 2025
  4. D. Ben KnobleMay 1, 2025

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.