All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] config doc: indent descriptions of feature.* variables
@ 2021-06-02  0:11 Andrei Rybak
  2021-06-02  1:14 ` Đoàn Trần Công Danh
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Andrei Rybak @ 2021-06-02  0:11 UTC (permalink / raw)
  To: git, dstolee; +Cc: Andrei Rybak

Config variables feature.experimental and feature.manyFiles are grouped
together under "feature.*".  However, this is not easily visible when
scanning the help page of git-config.

Indent the descriptions of individual feature.* config variables to help
the reader distinguish this group of variables.

Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
---
 Documentation/config/feature.txt | 40 +++++++++++++++++---------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
index cdecd04e5b..2c4dee170b 100644
--- a/Documentation/config/feature.txt
+++ b/Documentation/config/feature.txt
@@ -3,24 +3,26 @@ feature.*::
 	a group of other config settings. These groups are created by the Git
 	developer community as recommended defaults and are subject to change.
 	In particular, new config options may be added with different defaults.
-
-feature.experimental::
-	Enable config options that are new to Git, and are being considered for
-	future defaults. Config settings included here may be added or removed
-	with each release, including minor version updates. These settings may
-	have unintended interactions since they are so new. Please enable this
-	setting if you are interested in providing feedback on experimental
-	features. The new default values are:
 +
-* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
-skipping more commits at a time, reducing the number of round trips.
+--
+	feature.experimental::
+		Enable config options that are new to Git, and are being considered for
+		future defaults. Config settings included here may be added or removed
+		with each release, including minor version updates. These settings may
+		have unintended interactions since they are so new. Please enable this
+		setting if you are interested in providing feedback on experimental
+		features. The new default values are:
+	+
+	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
+	skipping more commits at a time, reducing the number of round trips.
 
-feature.manyFiles::
-	Enable config options that optimize for repos with many files in the
-	working directory. With many files, commands such as `git status` and
-	`git checkout` may be slow and these new defaults improve performance:
-+
-* `index.version=4` enables path-prefix compression in the index.
-+
-* `core.untrackedCache=true` enables the untracked cache. This setting assumes
-that mtime is working on your machine.
+	feature.manyFiles::
+		Enable config options that optimize for repos with many files in the
+		working directory. With many files, commands such as `git status` and
+		`git checkout` may be slow and these new defaults improve performance:
+	+
+	* `index.version=4` enables path-prefix compression in the index.
+	+
+	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
+	that mtime is working on your machine.
+--
-- 
2.31.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02  0:11 [PATCH] config doc: indent descriptions of feature.* variables Andrei Rybak
@ 2021-06-02  1:14 ` Đoàn Trần Công Danh
  2021-06-02  1:17 ` Derrick Stolee
  2021-06-03  7:02 ` Ævar Arnfjörð Bjarmason
  2 siblings, 0 replies; 9+ messages in thread
From: Đoàn Trần Công Danh @ 2021-06-02  1:14 UTC (permalink / raw)
  To: Andrei Rybak; +Cc: git, dstolee

On 2021-06-02 02:11:32+0200, Andrei Rybak <rybak.a.v@gmail.com> wrote:
> Config variables feature.experimental and feature.manyFiles are grouped
> together under "feature.*".  However, this is not easily visible when
> scanning the help page of git-config.

Skimming over Documentation, only "advice.*" does grouping and
indenting, however, "advice." part is being skipped there. 

I don't know what is the preference.

-- Danh

> 
> Indent the descriptions of individual feature.* config variables to help
> the reader distinguish this group of variables.
> 
> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
> ---
>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------
>  1 file changed, 21 insertions(+), 19 deletions(-)
> 
> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
> index cdecd04e5b..2c4dee170b 100644
> --- a/Documentation/config/feature.txt
> +++ b/Documentation/config/feature.txt
> @@ -3,24 +3,26 @@ feature.*::
>  	a group of other config settings. These groups are created by the Git
>  	developer community as recommended defaults and are subject to change.
>  	In particular, new config options may be added with different defaults.
> -
> -feature.experimental::
> -	Enable config options that are new to Git, and are being considered for
> -	future defaults. Config settings included here may be added or removed
> -	with each release, including minor version updates. These settings may
> -	have unintended interactions since they are so new. Please enable this
> -	setting if you are interested in providing feedback on experimental
> -	features. The new default values are:
>  +
> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
> -skipping more commits at a time, reducing the number of round trips.
> +--
> +	feature.experimental::
> +		Enable config options that are new to Git, and are being considered for
> +		future defaults. Config settings included here may be added or removed
> +		with each release, including minor version updates. These settings may
> +		have unintended interactions since they are so new. Please enable this
> +		setting if you are interested in providing feedback on experimental
> +		features. The new default values are:
> +	+
> +	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
> +	skipping more commits at a time, reducing the number of round trips.
>  
> -feature.manyFiles::
> -	Enable config options that optimize for repos with many files in the
> -	working directory. With many files, commands such as `git status` and
> -	`git checkout` may be slow and these new defaults improve performance:
> -+
> -* `index.version=4` enables path-prefix compression in the index.
> -+
> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes
> -that mtime is working on your machine.
> +	feature.manyFiles::
> +		Enable config options that optimize for repos with many files in the
> +		working directory. With many files, commands such as `git status` and
> +		`git checkout` may be slow and these new defaults improve performance:
> +	+
> +	* `index.version=4` enables path-prefix compression in the index.
> +	+
> +	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
> +	that mtime is working on your machine.
> +--
> -- 
> 2.31.1
> 

-- 
Danh

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02  0:11 [PATCH] config doc: indent descriptions of feature.* variables Andrei Rybak
  2021-06-02  1:14 ` Đoàn Trần Công Danh
@ 2021-06-02  1:17 ` Derrick Stolee
  2021-06-02 16:59   ` Taylor Blau
  2021-06-03  7:02 ` Ævar Arnfjörð Bjarmason
  2 siblings, 1 reply; 9+ messages in thread
From: Derrick Stolee @ 2021-06-02  1:17 UTC (permalink / raw)
  To: Andrei Rybak, git, dstolee

On 6/1/2021 8:11 PM, Andrei Rybak wrote:
> Config variables feature.experimental and feature.manyFiles are grouped
> together under "feature.*".  However, this is not easily visible when
> scanning the help page of git-config.
>
> Indent the descriptions of individual feature.* config variables to help
> the reader distinguish this group of variables.

I'm not sure how these extra tabs help in the rendered text, or in
the formatted HTML output for the git-scm.com web page. I do believe
that we would want to re-wrap the paragraphs to ensure we are not using
too many characters per line.

Is there precedence for a simple tabbing like this? I was able to find
a similar grouping for advice.* in Documentation/config/advice.txt, but
it uses a different kind of grouping. Perhaps reorganize the file to use
that strategy instead?

Or, perhaps just point me to an existing use of this pattern.

Thanks,
-Stolee

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02  1:17 ` Derrick Stolee
@ 2021-06-02 16:59   ` Taylor Blau
  2021-06-02 20:38     ` Todd Zullinger
  0 siblings, 1 reply; 9+ messages in thread
From: Taylor Blau @ 2021-06-02 16:59 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: Andrei Rybak, git, dstolee

On Tue, Jun 01, 2021 at 09:17:54PM -0400, Derrick Stolee wrote:
> On 6/1/2021 8:11 PM, Andrei Rybak wrote:
> > Config variables feature.experimental and feature.manyFiles are grouped
> > together under "feature.*".  However, this is not easily visible when
> > scanning the help page of git-config.
> >
> > Indent the descriptions of individual feature.* config variables to help
> > the reader distinguish this group of variables.
>
> I'm not sure how these extra tabs help in the rendered text, or in
> the formatted HTML output for the git-scm.com web page. I do believe
> that we would want to re-wrap the paragraphs to ensure we are not using
> too many characters per line.
>
> Is there precedence for a simple tabbing like this? I was able to find
> a similar grouping for advice.* in Documentation/config/advice.txt, but
> it uses a different kind of grouping. Perhaps reorganize the file to use
> that strategy instead?

AsciiDoc has a couple of ways to indent a subsection, one example (which
uses the same style '--' header as in these patches) can be found in
9218c6a40c (midx: allow marking a pack as preferred, 2021-03-30).

> Or, perhaps just point me to an existing use of this pattern.

git-scm.com doesn't have 9218c6a40c yet, since it won't be released
until 2.32, but grepping around for '^--' in Documentation shows some
other results.

Thanks,
Taylor

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02 16:59   ` Taylor Blau
@ 2021-06-02 20:38     ` Todd Zullinger
  2021-06-02 23:04       ` Felipe Contreras
  0 siblings, 1 reply; 9+ messages in thread
From: Todd Zullinger @ 2021-06-02 20:38 UTC (permalink / raw)
  To: Taylor Blau; +Cc: Derrick Stolee, Andrei Rybak, git, dstolee

Taylor Blau wrote:
> On Tue, Jun 01, 2021 at 09:17:54PM -0400, Derrick Stolee wrote:
>> On 6/1/2021 8:11 PM, Andrei Rybak wrote:
>>> Config variables feature.experimental and feature.manyFiles are grouped
>>> together under "feature.*".  However, this is not easily visible when
>>> scanning the help page of git-config.
>>>
>>> Indent the descriptions of individual feature.* config variables to help
>>> the reader distinguish this group of variables.
>>
>> I'm not sure how these extra tabs help in the rendered text, or in
>> the formatted HTML output for the git-scm.com web page. I do believe
>> that we would want to re-wrap the paragraphs to ensure we are not using
>> too many characters per line.
>>
>> Is there precedence for a simple tabbing like this? I was able to find
>> a similar grouping for advice.* in Documentation/config/advice.txt, but
>> it uses a different kind of grouping. Perhaps reorganize the file to use
>> that strategy instead?
> 
> AsciiDoc has a couple of ways to indent a subsection, one example (which
> uses the same style '--' header as in these patches) can be found in
> 9218c6a40c (midx: allow marking a pack as preferred, 2021-03-30).
> 
>> Or, perhaps just point me to an existing use of this pattern.
> 
> git-scm.com doesn't have 9218c6a40c yet, since it won't be released
> until 2.32, but grepping around for '^--' in Documentation shows some
> other results.

One thing worth noting if this is picked up, I think the `+`
continuations inside the `--` open block should be removed.
They render fine in asciidoc, but in asciidoctor the `+`
characters remain in the rendered output.

Here's a doc-diff with and without the additional `+`
continuations in asciidoctor:

    --- a/git-config.1	2021-06-01 21:39:56.769640893 -0400
    +++ b/git-config.1	2021-06-01 21:40:03.318893602 -0400
    @@ -2474,7 +2474,7 @@
                    version updates. These settings may have unintended
                    interactions since they are so new. Please enable this setting
                    if you are interested in providing feedback on experimental
    -               features. The new default values are: +
    +               features. The new default values are:
     
                    •   fetch.negotiationAlgorithm=skipping may improve fetch
                        negotiation times by skipping more commits at a time,
    @@ -2484,10 +2484,10 @@
                    Enable config options that optimize for repos with many files
                    in the working directory. With many files, commands such as git
                    status and git checkout may be slow and these new defaults
    -               improve performance: +
    +               improve performance:
     
                    •   index.version=4 enables path-prefix compression in the
    -                   index. +
    +                   index.
     
                    •   core.untrackedCache=true enables the untracked cache. This
                        setting assumes that mtime is working on your machine.

Here's what I suggest be squashed into this patch:

diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
index 2c4dee170b..7975ec35fd 100644
--- a/Documentation/config/feature.txt
+++ b/Documentation/config/feature.txt
@@ -12,7 +12,7 @@ feature.*::
 		have unintended interactions since they are so new. Please enable this
 		setting if you are interested in providing feedback on experimental
 		features. The new default values are:
-	+
+
 	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
 	skipping more commits at a time, reducing the number of round trips.
 
@@ -20,9 +20,9 @@ feature.*::
 		Enable config options that optimize for repos with many files in the
 		working directory. With many files, commands such as `git status` and
 		`git checkout` may be slow and these new defaults improve performance:
-	+
+
 	* `index.version=4` enables path-prefix compression in the index.
-	+
+
 	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
 	that mtime is working on your machine.
 --

With the above, the man page output renders identically with
asciidoc (9.1.0) and asciidoctor (I tested both 2.0.10 and
2.0.15).

The asciidoc documentation[1] says:

    If you’re attaching more than one block to a list item,
    you’re strongly encouraged to wrap the content inside an
    open block. That way, you only need a single list
    continuation line to attach the open block to the list
    item. Within the open block, you write like you normally
    would, no longer having to worry about adding list
    continuations between the blocks to keep them attached
    to the list item.

[1] https://docs.asciidoctor.org/asciidoc/latest/lists/continuation/#list-continuation

Only mildly related, but while I was looking at the output,
I noticed that the man page renders the phrase "The config
settings that start with `feature.` modify the defaults"
oddly.  It places two spaces after the full stop.  It might
be worth writing that sentence slightly differently to avoid
that.  Maybe something like:

-       The config settings that start with `feature.` modify the defaults of
+       The `feature.*` variables modify the defaults of

-- 
Todd

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02 20:38     ` Todd Zullinger
@ 2021-06-02 23:04       ` Felipe Contreras
  0 siblings, 0 replies; 9+ messages in thread
From: Felipe Contreras @ 2021-06-02 23:04 UTC (permalink / raw)
  To: Todd Zullinger, Taylor Blau; +Cc: Derrick Stolee, Andrei Rybak, git, dstolee

Todd Zullinger wrote:
> --- a/Documentation/config/feature.txt
> +++ b/Documentation/config/feature.txt
> @@ -12,7 +12,7 @@ feature.*::
>  		have unintended interactions since they are so new. Please enable this
>  		setting if you are interested in providing feedback on experimental
>  		features. The new default values are:
> -	+
> +
>  	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
>  	skipping more commits at a time, reducing the number of round trips.
>  
> @@ -20,9 +20,9 @@ feature.*::
>  		Enable config options that optimize for repos with many files in the
>  		working directory. With many files, commands such as `git status` and
>  		`git checkout` may be slow and these new defaults improve performance:
> -	+
> +
>  	* `index.version=4` enables path-prefix compression in the index.
> -	+
> +
>  	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
>  	that mtime is working on your machine.
>  --
> 
> With the above, the man page output renders identically with
> asciidoc (9.1.0) and asciidoctor (I tested both 2.0.10 and
> 2.0.15).

I can confirm the above looks fine in both.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-02  0:11 [PATCH] config doc: indent descriptions of feature.* variables Andrei Rybak
  2021-06-02  1:14 ` Đoàn Trần Công Danh
  2021-06-02  1:17 ` Derrick Stolee
@ 2021-06-03  7:02 ` Ævar Arnfjörð Bjarmason
  2021-06-03  7:43   ` Ævar Arnfjörð Bjarmason
  2 siblings, 1 reply; 9+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-06-03  7:02 UTC (permalink / raw)
  To: Andrei Rybak; +Cc: git, dstolee


On Wed, Jun 02 2021, Andrei Rybak wrote:

> Config variables feature.experimental and feature.manyFiles are grouped
> together under "feature.*".  However, this is not easily visible when
> scanning the help page of git-config.
>
> Indent the descriptions of individual feature.* config variables to help
> the reader distinguish this group of variables.
>
> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
> ---
>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------
>  1 file changed, 21 insertions(+), 19 deletions(-)
>
> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
> index cdecd04e5b..2c4dee170b 100644
> --- a/Documentation/config/feature.txt
> +++ b/Documentation/config/feature.txt
> @@ -3,24 +3,26 @@ feature.*::
>  	a group of other config settings. These groups are created by the Git
>  	developer community as recommended defaults and are subject to change.
>  	In particular, new config options may be added with different defaults.
> -
> -feature.experimental::
> -	Enable config options that are new to Git, and are being considered for
> -	future defaults. Config settings included here may be added or removed
> -	with each release, including minor version updates. These settings may
> -	have unintended interactions since they are so new. Please enable this
> -	setting if you are interested in providing feedback on experimental
> -	features. The new default values are:
>  +
> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
> -skipping more commits at a time, reducing the number of round trips.
> +--
> +	feature.experimental::
> +		Enable config options that are new to Git, and are being considered for
> +		future defaults. Config settings included here may be added or removed
> +		with each release, including minor version updates. These settings may
> +		have unintended interactions since they are so new. Please enable this
> +		setting if you are interested in providing feedback on experimental
> +		features. The new default values are:
> +	+
> +	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
> +	skipping more commits at a time, reducing the number of round trips.
>  
> -feature.manyFiles::
> -	Enable config options that optimize for repos with many files in the
> -	working directory. With many files, commands such as `git status` and
> -	`git checkout` may be slow and these new defaults improve performance:
> -+
> -* `index.version=4` enables path-prefix compression in the index.
> -+
> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes
> -that mtime is working on your machine.
> +	feature.manyFiles::
> +		Enable config options that optimize for repos with many files in the
> +		working directory. With many files, commands such as `git status` and
> +		`git checkout` may be slow and these new defaults improve performance:
> +	+
> +	* `index.version=4` enables path-prefix compression in the index.
> +	+
> +	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
> +	that mtime is working on your machine.
> +--

I don't know if/how this helps readability, but this breaks the
feature.* generation of these variables in config-list.h, see
generate-configlist.sh.

So if you make this change you need to fix that script as well.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-03  7:02 ` Ævar Arnfjörð Bjarmason
@ 2021-06-03  7:43   ` Ævar Arnfjörð Bjarmason
  2021-06-03 18:03     ` Felipe Contreras
  0 siblings, 1 reply; 9+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2021-06-03  7:43 UTC (permalink / raw)
  To: Andrei Rybak; +Cc: git, dstolee


On Thu, Jun 03 2021, Ævar Arnfjörð Bjarmason wrote:

> On Wed, Jun 02 2021, Andrei Rybak wrote:
>
>> Config variables feature.experimental and feature.manyFiles are grouped
>> together under "feature.*".  However, this is not easily visible when
>> scanning the help page of git-config.
>>
>> Indent the descriptions of individual feature.* config variables to help
>> the reader distinguish this group of variables.
>>
>> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>
>> ---
>>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------
>>  1 file changed, 21 insertions(+), 19 deletions(-)
>>
>> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt
>> index cdecd04e5b..2c4dee170b 100644
>> --- a/Documentation/config/feature.txt
>> +++ b/Documentation/config/feature.txt
>> @@ -3,24 +3,26 @@ feature.*::
>>  	a group of other config settings. These groups are created by the Git
>>  	developer community as recommended defaults and are subject to change.
>>  	In particular, new config options may be added with different defaults.
>> -
>> -feature.experimental::
>> -	Enable config options that are new to Git, and are being considered for
>> -	future defaults. Config settings included here may be added or removed
>> -	with each release, including minor version updates. These settings may
>> -	have unintended interactions since they are so new. Please enable this
>> -	setting if you are interested in providing feedback on experimental
>> -	features. The new default values are:
>>  +
>> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
>> -skipping more commits at a time, reducing the number of round trips.
>> +--
>> +	feature.experimental::
>> +		Enable config options that are new to Git, and are being considered for
>> +		future defaults. Config settings included here may be added or removed
>> +		with each release, including minor version updates. These settings may
>> +		have unintended interactions since they are so new. Please enable this
>> +		setting if you are interested in providing feedback on experimental
>> +		features. The new default values are:
>> +	+
>> +	* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
>> +	skipping more commits at a time, reducing the number of round trips.
>>  
>> -feature.manyFiles::
>> -	Enable config options that optimize for repos with many files in the
>> -	working directory. With many files, commands such as `git status` and
>> -	`git checkout` may be slow and these new defaults improve performance:
>> -+
>> -* `index.version=4` enables path-prefix compression in the index.
>> -+
>> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes
>> -that mtime is working on your machine.
>> +	feature.manyFiles::
>> +		Enable config options that optimize for repos with many files in the
>> +		working directory. With many files, commands such as `git status` and
>> +		`git checkout` may be slow and these new defaults improve performance:
>> +	+
>> +	* `index.version=4` enables path-prefix compression in the index.
>> +	+
>> +	* `core.untrackedCache=true` enables the untracked cache. This setting assumes
>> +	that mtime is working on your machine.
>> +--
>
> I don't know if/how this helps readability, but this breaks the
> feature.* generation of these variables in config-list.h, see
> generate-configlist.sh.
>
> So if you make this change you need to fix that script as well.

Being a bit more awake I'd prefer not to see this patch go in in its
current form, here's why:

I've got a WIP series I was going to submit soon that:

 1. Ensures that all config variables are discussed canonically in
    git-config(1), e.g. for sendemail.* we now point elsewhere.

 2. Adds a "CONFIGURATION" section to all relevant manpages, which then
    include the relevant section(s) for variables that affect those
    commands.

 3. #2 requires splitting up many of Documentation/config/whatever.txt
    into Documentation/config/whatever/<sub-lists>.txt, notably things
    like Documentation/config/color.txt need to become
    Documentation/config/color/{diff,status,...}.txt so
    Documentation/git-{status,diff,...}.txt can include them.

This only works because we don't have something like your proposed patch
here.

I.e. asciidoc isn't going to take kindly to feature.manyFiles being
indented when I include it in git-{status,checkout}.txt, in its
CONFIGURATION section that'll be either a syntax error, or look out of
place.

But more importantly there seems to just be a better way to do it,
looking at the current config file we have the pattern you're trying to
introduce for advice.* already, except it's differently formatted, i.e.:

    advice.*
        SubVariaBle::

But yours is:

    feature.*
        feature.SubVariaBle::

The advice.* ones also have the config-list.h issue I noted. But in any
case, it seems to me that the issue is that we group these things at the
top-level under git-config(1)'s "CONFIGURATION FILE" section, we should
really split them into a CONFIGURATION VARIABLES, and then have these
advice.* or whatever be a section on the level of the current
"Variables", i.e. something like the incomplete patch below[1].

That would both look nicer IMO, and allow us to not indent things in
Documentation/config/*.txt. If you agree I'd very much like you to pick
up & run with that alternate approach instead, what do you think?

1.

diff --git a/Documentation/config.txt b/Documentation/config.txt
index bf82766a6a2..5e52b0db1fa 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -299,9 +299,8 @@ pathname::
 	is expanded to the value of `$HOME`, and `~user/` to the
 	specified user's home directory.
 
-
-Variables
-~~~~~~~~~
+CONFIGURATION VARIABLES
+-----------------------
 
 Note that this list is non-comprehensive and not necessarily complete.
 For command-specific variables, you will find a more detailed description
@@ -312,10 +311,24 @@ inventing new variables for use in your own tool, make sure their
 names do not conflict with those that are used by Git itself and
 other popular tools, and describe them in your documentation.
 
+
+advice.*
+~~~~~~~~
+
+These variables control various optional help messages designed to aid
+new users. All 'advice.*' variables default to 'true', and you can
+tell Git that you do not need help by setting these to 'false':
+
 include::config/advice.txt[]
 
+core.*
+~~~~~~
+
 include::config/core.txt[]
 
+add.*
+~~~~~
+
 include::config/add.txt[]
 
 include::config/alias.txt[]
diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
index 8b2849ff7b3..35d6b0e20ff 100644
--- a/Documentation/config/advice.txt
+++ b/Documentation/config/advice.txt
@@ -1,126 +1,119 @@
-advice.*::
-	These variables control various optional help messages designed to
-	aid new users. All 'advice.*' variables default to 'true', and you
-	can tell Git that you do not need help by setting these to 'false':
-+
---
-	fetchShowForcedUpdates::
-		Advice shown when linkgit:git-fetch[1] takes a long time
-		to calculate forced updates after ref updates, or to warn
-		that the check is disabled.
-	pushUpdateRejected::
-		Set this variable to 'false' if you want to disable
-		'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',
-		'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'
-		simultaneously.
-	pushNonFFCurrent::
-		Advice shown when linkgit:git-push[1] fails due to a
-		non-fast-forward update to the current branch.
-	pushNonFFMatching::
-		Advice shown when you ran linkgit:git-push[1] and pushed
-		'matching refs' explicitly (i.e. you used ':', or
-		specified a refspec that isn't your current branch) and
-		it resulted in a non-fast-forward error.
-	pushAlreadyExists::
-		Shown when linkgit:git-push[1] rejects an update that
-		does not qualify for fast-forwarding (e.g., a tag.)
-	pushFetchFirst::
-		Shown when linkgit:git-push[1] rejects an update that
-		tries to overwrite a remote ref that points at an
-		object we do not have.
-	pushNeedsForce::
-		Shown when linkgit:git-push[1] rejects an update that
-		tries to overwrite a remote ref that points at an
-		object that is not a commit-ish, or make the remote
-		ref point at an object that is not a commit-ish.
-	pushUnqualifiedRefname::
-		Shown when linkgit:git-push[1] gives up trying to
-		guess based on the source and destination refs what
-		remote ref namespace the source belongs in, but where
-		we can still suggest that the user push to either
-		refs/heads/* or refs/tags/* based on the type of the
-		source object.
-	pushRefNeedsUpdate::
-		Shown when linkgit:git-push[1] rejects a forced update of
-		a branch when its remote-tracking ref has updates that we
-		do not have locally.
-	statusAheadBehind::
-		Shown when linkgit:git-status[1] computes the ahead/behind
-		counts for a local ref compared to its remote tracking ref,
-		and that calculation takes longer than expected. Will not
-		appear if `status.aheadBehind` is false or the option
-		`--no-ahead-behind` is given.
-	statusHints::
-		Show directions on how to proceed from the current
-		state in the output of linkgit:git-status[1], in
-		the template shown when writing commit messages in
-		linkgit:git-commit[1], and in the help message shown
-		by linkgit:git-switch[1] or
-		linkgit:git-checkout[1] when switching branch.
-	statusUoption::
-		Advise to consider using the `-u` option to linkgit:git-status[1]
-		when the command takes more than 2 seconds to enumerate untracked
-		files.
-	commitBeforeMerge::
-		Advice shown when linkgit:git-merge[1] refuses to
-		merge to avoid overwriting local changes.
-	resetQuiet::
-		Advice to consider using the `--quiet` option to linkgit:git-reset[1]
-		when the command takes more than 2 seconds to enumerate unstaged
-		changes after reset.
-	resolveConflict::
-		Advice shown by various commands when conflicts
-		prevent the operation from being performed.
-	sequencerInUse::
-		Advice shown when a sequencer command is already in progress.
-	implicitIdentity::
-		Advice on how to set your identity configuration when
-		your information is guessed from the system username and
-		domain name.
-	detachedHead::
-		Advice shown when you used
-		linkgit:git-switch[1] or linkgit:git-checkout[1]
-		to move to the detach HEAD state, to instruct how to
-		create a local branch after the fact.
-	checkoutAmbiguousRemoteBranchName::
-		Advice shown when the argument to
-		linkgit:git-checkout[1] and linkgit:git-switch[1]
-		ambiguously resolves to a
-		remote tracking branch on more than one remote in
-		situations where an unambiguous argument would have
-		otherwise caused a remote-tracking branch to be
-		checked out. See the `checkout.defaultRemote`
-		configuration variable for how to set a given remote
-		to used by default in some situations where this
-		advice would be printed.
-	amWorkDir::
-		Advice that shows the location of the patch file when
-		linkgit:git-am[1] fails to apply it.
-	rmHints::
-		In case of failure in the output of linkgit:git-rm[1],
-		show directions on how to proceed from the current state.
-	addEmbeddedRepo::
-		Advice on what to do when you've accidentally added one
-		git repo inside of another.
-	ignoredHook::
-		Advice shown if a hook is ignored because the hook is not
-		set as executable.
-	waitingForEditor::
-		Print a message to the terminal whenever Git is waiting for
-		editor input from the user.
-	nestedTag::
-		Advice shown if a user attempts to recursively tag a tag object.
-	submoduleAlternateErrorStrategyDie::
-		Advice shown when a submodule.alternateErrorStrategy option
-		configured to "die" causes a fatal error.
-	addIgnoredFile::
-		Advice shown if a user attempts to add an ignored file to
-		the index.
-	addEmptyPathspec::
-		Advice shown if a user runs the add command without providing
-		the pathspec parameter.
-	updateSparsePath::
-		Advice shown when either linkgit:git-add[1] or linkgit:git-rm[1]
-		is asked to update index entries outside the current sparse
-		checkout.
---
+advice.*fetchShowForcedUpdates::
+	Advice shown when linkgit:git-fetch[1] takes a long time
+	to calculate forced updates after ref updates, or to warn
+	that the check is disabled.
+advice.pushUpdateRejected::
+	Set this variable to 'false' if you want to disable
+	'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',
+	'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'
+	simultaneously.
+advice.pushNonFFCurrent::
+	Advice shown when linkgit:git-push[1] fails due to a
+	non-fast-forward update to the current branch.
+advice.pushNonFFMatching::
+	Advice shown when you ran linkgit:git-push[1] and pushed
+	'matching refs' explicitly (i.e. you used ':', or
+	specified a refspec that isn't your current branch) and
+	it resulted in a non-fast-forward error.
+advice.pushAlreadyExists::
+	Shown when linkgit:git-push[1] rejects an update that
+	does not qualify for fast-forwarding (e.g., a tag.)
+pushFetchFirst::
+	Shown when linkgit:git-push[1] rejects an update that
+	tries to overwrite a remote ref that points at an
+	object we do not have.
+pushNeedsForce::
+	Shown when linkgit:git-push[1] rejects an update that
+	tries to overwrite a remote ref that points at an
+	object that is not a commit-ish, or make the remote
+	ref point at an object that is not a commit-ish.
+pushUnqualifiedRefname::
+	Shown when linkgit:git-push[1] gives up trying to
+	guess based on the source and destination refs what
+	remote ref namespace the source belongs in, but where
+	we can still suggest that the user push to either
+	refs/heads/* or refs/tags/* based on the type of the
+	source object.
+pushRefNeedsUpdate::
+	Shown when linkgit:git-push[1] rejects a forced update of
+	a branch when its remote-tracking ref has updates that we
+	do not have locally.
+statusAheadBehind::
+	Shown when linkgit:git-status[1] computes the ahead/behind
+	counts for a local ref compared to its remote tracking ref,
+	and that calculation takes longer than expected. Will not
+	appear if `status.aheadBehind` is false or the option
+	`--no-ahead-behind` is given.
+statusHints::
+	Show directions on how to proceed from the current
+	state in the output of linkgit:git-status[1], in
+	the template shown when writing commit messages in
+	linkgit:git-commit[1], and in the help message shown
+	by linkgit:git-switch[1] or
+	linkgit:git-checkout[1] when switching branch.
+statusUoption::
+	Advise to consider using the `-u` option to linkgit:git-status[1]
+	when the command takes more than 2 seconds to enumerate untracked
+	files.
+commitBeforeMerge::
+	Advice shown when linkgit:git-merge[1] refuses to
+	merge to avoid overwriting local changes.
+resetQuiet::
+	Advice to consider using the `--quiet` option to linkgit:git-reset[1]
+	when the command takes more than 2 seconds to enumerate unstaged
+	changes after reset.
+resolveConflict::
+	Advice shown by various commands when conflicts
+	prevent the operation from being performed.
+sequencerInUse::
+	Advice shown when a sequencer command is already in progress.
+implicitIdentity::
+	Advice on how to set your identity configuration when
+	your information is guessed from the system username and
+	domain name.
+detachedHead::
+	Advice shown when you used
+	linkgit:git-switch[1] or linkgit:git-checkout[1]
+	to move to the detach HEAD state, to instruct how to
+	create a local branch after the fact.
+checkoutAmbiguousRemoteBranchName::
+	Advice shown when the argument to
+	linkgit:git-checkout[1] and linkgit:git-switch[1]
+	ambiguously resolves to a
+	remote tracking branch on more than one remote in
+	situations where an unambiguous argument would have
+	otherwise caused a remote-tracking branch to be
+	checked out. See the `checkout.defaultRemote`
+	configuration variable for how to set a given remote
+	to used by default in some situations where this
+	advice would be printed.
+amWorkDir::
+	Advice that shows the location of the patch file when
+	linkgit:git-am[1] fails to apply it.
+rmHints::
+	In case of failure in the output of linkgit:git-rm[1],
+	show directions on how to proceed from the current state.
+addEmbeddedRepo::
+	Advice on what to do when you've accidentally added one
+	git repo inside of another.
+ignoredHook::
+	Advice shown if a hook is ignored because the hook is not
+	set as executable.
+waitingForEditor::
+	Print a message to the terminal whenever Git is waiting for
+	editor input from the user.
+nestedTag::
+	Advice shown if a user attempts to recursively tag a tag object.
+submoduleAlternateErrorStrategyDie::
+	Advice shown when a submodule.alternateErrorStrategy option
+	configured to "die" causes a fatal error.
+addIgnoredFile::
+	Advice shown if a user attempts to add an ignored file to
+	the index.
+addEmptyPathspec::
+	Advice shown if a user runs the add command without providing
+	the pathspec parameter.
+updateSparsePath::
+	Advice shown when either linkgit:git-add[1] or linkgit:git-rm[1]
+	is asked to update index entries outside the current sparse
+	checkout.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] config doc: indent descriptions of feature.* variables
  2021-06-03  7:43   ` Ævar Arnfjörð Bjarmason
@ 2021-06-03 18:03     ` Felipe Contreras
  0 siblings, 0 replies; 9+ messages in thread
From: Felipe Contreras @ 2021-06-03 18:03 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason, Andrei Rybak; +Cc: git, dstolee

Ævar Arnfjörð Bjarmason wrote:
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -299,9 +299,8 @@ pathname::
>  	is expanded to the value of `$HOME`, and `~user/` to the
>  	specified user's home directory.
>  
> -
> -Variables
> -~~~~~~~~~
> +CONFIGURATION VARIABLES
> +-----------------------
>  
>  Note that this list is non-comprehensive and not necessarily complete.
>  For command-specific variables, you will find a more detailed description
> @@ -312,10 +311,24 @@ inventing new variables for use in your own tool, make sure their
>  names do not conflict with those that are used by Git itself and
>  other popular tools, and describe them in your documentation.
>  
> +
> +advice.*
> +~~~~~~~~
> +
> +These variables control various optional help messages designed to aid
> +new users. All 'advice.*' variables default to 'true', and you can
> +tell Git that you do not need help by setting these to 'false':
> +
>  include::config/advice.txt[]
>  
> +core.*
> +~~~~~~
> +
>  include::config/core.txt[]
>  
> +add.*
> +~~~~~
> +
>  include::config/add.txt[]

This looks much better to me. +1

>  include::config/alias.txt[]
> diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
> index 8b2849ff7b3..35d6b0e20ff 100644
> --- a/Documentation/config/advice.txt
> +++ b/Documentation/config/advice.txt
> @@ -1,126 +1,119 @@
> -advice.*::
> -	These variables control various optional help messages designed to
> -	aid new users. All 'advice.*' variables default to 'true', and you
> -	can tell Git that you do not need help by setting these to 'false':
> -+
> ---

...

> ---
> +advice.*fetchShowForcedUpdates::
> +	Advice shown when linkgit:git-fetch[1] takes a long time
> +	to calculate forced updates after ref updates, or to warn
> +	that the check is disabled.
> +advice.pushUpdateRejected::
> +	Set this variable to 'false' if you want to disable
> +	'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',
> +	'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'
> +	simultaneously.
> +advice.pushNonFFCurrent::
> +	Advice shown when linkgit:git-push[1] fails due to a
> +	non-fast-forward update to the current branch.
> +advice.pushNonFFMatching::
> +	Advice shown when you ran linkgit:git-push[1] and pushed
> +	'matching refs' explicitly (i.e. you used ':', or
> +	specified a refspec that isn't your current branch) and
> +	it resulted in a non-fast-forward error.
> +advice.pushAlreadyExists::
> +	Shown when linkgit:git-push[1] rejects an update that
> +	does not qualify for fast-forwarding (e.g., a tag.)
> +pushFetchFirst::

I presume this also has the 'advice.' prefix added (and so do the rest),
it was just an example patch.

Cheers.

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-06-03 18:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-02  0:11 [PATCH] config doc: indent descriptions of feature.* variables Andrei Rybak
2021-06-02  1:14 ` Đoàn Trần Công Danh
2021-06-02  1:17 ` Derrick Stolee
2021-06-02 16:59   ` Taylor Blau
2021-06-02 20:38     ` Todd Zullinger
2021-06-02 23:04       ` Felipe Contreras
2021-06-03  7:02 ` Ævar Arnfjörð Bjarmason
2021-06-03  7:43   ` Ævar Arnfjörð Bjarmason
2021-06-03 18:03     ` Felipe Contreras

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.