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