{"thread":{"id":"55824","subject":"[PATCH] config doc: indent descriptions of feature.* variables","startedAt":"2021-06-02T00:11:40Z","lastAt":"2021-06-03T18:03:41Z","messageCount":9,"participants":["Andrei Rybak","Đoàn Trần Công Danh","Derrick Stolee","Taylor Blau","Todd Zullinger","Felipe Contreras","Ævar Arnfjörð Bjarmason"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"426180","messageId":"20210602001132.459705-1-rybak.a.v@gmail.com","threadId":"55824","inReplyTo":null,"subject":"[PATCH] config doc: indent descriptions of feature.* variables","fromName":"Andrei Rybak","fromEmail":"rybak.a.v@gmail.com","sentAt":"2021-06-02T00:11:32Z","receivedAt":"2021-06-02T00:11:40Z","isPatch":true,"sender":{"key":"rybak.a.v@gmail.com","avatar":"https://avatars.githubusercontent.com/u/624072?v=4"},"body":"Config variables feature.experimental and feature.manyFiles are grouped\ntogether under \"feature.*\".  However, this is not easily visible when\nscanning the help page of git-config.\n\nIndent the descriptions of individual feature.* config variables to help\nthe reader distinguish this group of variables.\n\nSigned-off-by: Andrei Rybak <rybak.a.v@gmail.com>\n---\n Documentation/config/feature.txt | 40 +++++++++++++++++---------------\n 1 file changed, 21 insertions(+), 19 deletions(-)\n\ndiff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt\nindex cdecd04e5b..2c4dee170b 100644\n--- a/Documentation/config/feature.txt\n+++ b/Documentation/config/feature.txt\n@@ -3,24 +3,26 @@ feature.*::\n \ta group of other config settings. These groups are created by the Git\n \tdeveloper community as recommended defaults and are subject to change.\n \tIn particular, new config options may be added with different defaults.\n-\n-feature.experimental::\n-\tEnable config options that are new to Git, and are being considered for\n-\tfuture defaults. Config settings included here may be added or removed\n-\twith each release, including minor version updates. These settings may\n-\thave unintended interactions since they are so new. Please enable this\n-\tsetting if you are interested in providing feedback on experimental\n-\tfeatures. The new default values are:\n +\n-* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n-skipping more commits at a time, reducing the number of round trips.\n+--\n+\tfeature.experimental::\n+\t\tEnable config options that are new to Git, and are being considered for\n+\t\tfuture defaults. Config settings included here may be added or removed\n+\t\twith each release, including minor version updates. These settings may\n+\t\thave unintended interactions since they are so new. Please enable this\n+\t\tsetting if you are interested in providing feedback on experimental\n+\t\tfeatures. The new default values are:\n+\t+\n+\t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n+\tskipping more commits at a time, reducing the number of round trips.\n \n-feature.manyFiles::\n-\tEnable config options that optimize for repos with many files in the\n-\tworking directory. With many files, commands such as `git status` and\n-\t`git checkout` may be slow and these new defaults improve performance:\n-+\n-* `index.version=4` enables path-prefix compression in the index.\n-+\n-* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n-that mtime is working on your machine.\n+\tfeature.manyFiles::\n+\t\tEnable config options that optimize for repos with many files in the\n+\t\tworking directory. With many files, commands such as `git status` and\n+\t\t`git checkout` may be slow and these new defaults improve performance:\n+\t+\n+\t* `index.version=4` enables path-prefix compression in the index.\n+\t+\n+\t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n+\tthat mtime is working on your machine.\n+--\n-- \n2.31.1\n\n"},{"id":"426184","messageId":"YLbbifC5dt5TsIPl@danh.dev","threadId":"55824","inReplyTo":"20210602001132.459705-1-rybak.a.v@gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Đoàn Trần Công Danh","fromEmail":"congdanhqx@gmail.com","sentAt":"2021-06-02T01:14:49Z","receivedAt":"2021-06-02T01:14:55Z","isPatch":true,"sender":{"key":"congdanhqx@gmail.com","avatar":"https://avatars.githubusercontent.com/u/42673067?v=4"},"body":"On 2021-06-02 02:11:32+0200, Andrei Rybak <rybak.a.v@gmail.com> wrote:\n> Config variables feature.experimental and feature.manyFiles are grouped\n> together under \"feature.*\".  However, this is not easily visible when\n> scanning the help page of git-config.\n\nSkimming over Documentation, only \"advice.*\" does grouping and\nindenting, however, \"advice.\" part is being skipped there. \n\nI don't know what is the preference.\n\n-- Danh\n\n> \n> Indent the descriptions of individual feature.* config variables to help\n> the reader distinguish this group of variables.\n> \n> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>\n> ---\n>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------\n>  1 file changed, 21 insertions(+), 19 deletions(-)\n> \n> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt\n> index cdecd04e5b..2c4dee170b 100644\n> --- a/Documentation/config/feature.txt\n> +++ b/Documentation/config/feature.txt\n> @@ -3,24 +3,26 @@ feature.*::\n>  \ta group of other config settings. These groups are created by the Git\n>  \tdeveloper community as recommended defaults and are subject to change.\n>  \tIn particular, new config options may be added with different defaults.\n> -\n> -feature.experimental::\n> -\tEnable config options that are new to Git, and are being considered for\n> -\tfuture defaults. Config settings included here may be added or removed\n> -\twith each release, including minor version updates. These settings may\n> -\thave unintended interactions since they are so new. Please enable this\n> -\tsetting if you are interested in providing feedback on experimental\n> -\tfeatures. The new default values are:\n>  +\n> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n> -skipping more commits at a time, reducing the number of round trips.\n> +--\n> +\tfeature.experimental::\n> +\t\tEnable config options that are new to Git, and are being considered for\n> +\t\tfuture defaults. Config settings included here may be added or removed\n> +\t\twith each release, including minor version updates. These settings may\n> +\t\thave unintended interactions since they are so new. Please enable this\n> +\t\tsetting if you are interested in providing feedback on experimental\n> +\t\tfeatures. The new default values are:\n> +\t+\n> +\t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n> +\tskipping more commits at a time, reducing the number of round trips.\n>  \n> -feature.manyFiles::\n> -\tEnable config options that optimize for repos with many files in the\n> -\tworking directory. With many files, commands such as `git status` and\n> -\t`git checkout` may be slow and these new defaults improve performance:\n> -+\n> -* `index.version=4` enables path-prefix compression in the index.\n> -+\n> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n> -that mtime is working on your machine.\n> +\tfeature.manyFiles::\n> +\t\tEnable config options that optimize for repos with many files in the\n> +\t\tworking directory. With many files, commands such as `git status` and\n> +\t\t`git checkout` may be slow and these new defaults improve performance:\n> +\t+\n> +\t* `index.version=4` enables path-prefix compression in the index.\n> +\t+\n> +\t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n> +\tthat mtime is working on your machine.\n> +--\n> -- \n> 2.31.1\n> \n\n-- \nDanh\n"},{"id":"426186","messageId":"057126a2-81c4-41cf-e41a-52a24a0c9a52@gmail.com","threadId":"55824","inReplyTo":"20210602001132.459705-1-rybak.a.v@gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2021-06-02T01:17:54Z","receivedAt":"2021-06-02T01:18:00Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 6/1/2021 8:11 PM, Andrei Rybak wrote:\n> Config variables feature.experimental and feature.manyFiles are grouped\n> together under \"feature.*\".  However, this is not easily visible when\n> scanning the help page of git-config.\n>\n> Indent the descriptions of individual feature.* config variables to help\n> the reader distinguish this group of variables.\n\nI'm not sure how these extra tabs help in the rendered text, or in\nthe formatted HTML output for the git-scm.com web page. I do believe\nthat we would want to re-wrap the paragraphs to ensure we are not using\ntoo many characters per line.\n\nIs there precedence for a simple tabbing like this? I was able to find\na similar grouping for advice.* in Documentation/config/advice.txt, but\nit uses a different kind of grouping. Perhaps reorganize the file to use\nthat strategy instead?\n\nOr, perhaps just point me to an existing use of this pattern.\n\nThanks,\n-Stolee\n"},{"id":"426242","messageId":"YLe4+2JKH1LYRTvv@nand.local","threadId":"55824","inReplyTo":"057126a2-81c4-41cf-e41a-52a24a0c9a52@gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2021-06-02T16:59:39Z","receivedAt":"2021-06-02T16:59:55Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Tue, Jun 01, 2021 at 09:17:54PM -0400, Derrick Stolee wrote:\n> On 6/1/2021 8:11 PM, Andrei Rybak wrote:\n> > Config variables feature.experimental and feature.manyFiles are grouped\n> > together under \"feature.*\".  However, this is not easily visible when\n> > scanning the help page of git-config.\n> >\n> > Indent the descriptions of individual feature.* config variables to help\n> > the reader distinguish this group of variables.\n>\n> I'm not sure how these extra tabs help in the rendered text, or in\n> the formatted HTML output for the git-scm.com web page. I do believe\n> that we would want to re-wrap the paragraphs to ensure we are not using\n> too many characters per line.\n>\n> Is there precedence for a simple tabbing like this? I was able to find\n> a similar grouping for advice.* in Documentation/config/advice.txt, but\n> it uses a different kind of grouping. Perhaps reorganize the file to use\n> that strategy instead?\n\nAsciiDoc has a couple of ways to indent a subsection, one example (which\nuses the same style '--' header as in these patches) can be found in\n9218c6a40c (midx: allow marking a pack as preferred, 2021-03-30).\n\n> Or, perhaps just point me to an existing use of this pattern.\n\ngit-scm.com doesn't have 9218c6a40c yet, since it won't be released\nuntil 2.32, but grepping around for '^--' in Documentation shows some\nother results.\n\nThanks,\nTaylor\n"},{"id":"426265","messageId":"20210602203849.GD15354@pobox.com","threadId":"55824","inReplyTo":"YLe4+2JKH1LYRTvv@nand.local","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Todd Zullinger","fromEmail":"tmz@pobox.com","sentAt":"2021-06-02T20:38:49Z","receivedAt":"2021-06-02T20:38:53Z","isPatch":true,"sender":{"key":"tmz@pobox.com","avatar":"https://avatars.githubusercontent.com/u/806319?v=4"},"body":"Taylor Blau wrote:\n> On Tue, Jun 01, 2021 at 09:17:54PM -0400, Derrick Stolee wrote:\n>> On 6/1/2021 8:11 PM, Andrei Rybak wrote:\n>>> Config variables feature.experimental and feature.manyFiles are grouped\n>>> together under \"feature.*\".  However, this is not easily visible when\n>>> scanning the help page of git-config.\n>>>\n>>> Indent the descriptions of individual feature.* config variables to help\n>>> the reader distinguish this group of variables.\n>>\n>> I'm not sure how these extra tabs help in the rendered text, or in\n>> the formatted HTML output for the git-scm.com web page. I do believe\n>> that we would want to re-wrap the paragraphs to ensure we are not using\n>> too many characters per line.\n>>\n>> Is there precedence for a simple tabbing like this? I was able to find\n>> a similar grouping for advice.* in Documentation/config/advice.txt, but\n>> it uses a different kind of grouping. Perhaps reorganize the file to use\n>> that strategy instead?\n> \n> AsciiDoc has a couple of ways to indent a subsection, one example (which\n> uses the same style '--' header as in these patches) can be found in\n> 9218c6a40c (midx: allow marking a pack as preferred, 2021-03-30).\n> \n>> Or, perhaps just point me to an existing use of this pattern.\n> \n> git-scm.com doesn't have 9218c6a40c yet, since it won't be released\n> until 2.32, but grepping around for '^--' in Documentation shows some\n> other results.\n\nOne thing worth noting if this is picked up, I think the `+`\ncontinuations inside the `--` open block should be removed.\nThey render fine in asciidoc, but in asciidoctor the `+`\ncharacters remain in the rendered output.\n\nHere's a doc-diff with and without the additional `+`\ncontinuations in asciidoctor:\n\n    --- a/git-config.1\t2021-06-01 21:39:56.769640893 -0400\n    +++ b/git-config.1\t2021-06-01 21:40:03.318893602 -0400\n    @@ -2474,7 +2474,7 @@\n                    version updates. These settings may have unintended\n                    interactions since they are so new. Please enable this setting\n                    if you are interested in providing feedback on experimental\n    -               features. The new default values are: +\n    +               features. The new default values are:\n     \n                    •   fetch.negotiationAlgorithm=skipping may improve fetch\n                        negotiation times by skipping more commits at a time,\n    @@ -2484,10 +2484,10 @@\n                    Enable config options that optimize for repos with many files\n                    in the working directory. With many files, commands such as git\n                    status and git checkout may be slow and these new defaults\n    -               improve performance: +\n    +               improve performance:\n     \n                    •   index.version=4 enables path-prefix compression in the\n    -                   index. +\n    +                   index.\n     \n                    •   core.untrackedCache=true enables the untracked cache. This\n                        setting assumes that mtime is working on your machine.\n\nHere's what I suggest be squashed into this patch:\n\ndiff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt\nindex 2c4dee170b..7975ec35fd 100644\n--- a/Documentation/config/feature.txt\n+++ b/Documentation/config/feature.txt\n@@ -12,7 +12,7 @@ feature.*::\n \t\thave unintended interactions since they are so new. Please enable this\n \t\tsetting if you are interested in providing feedback on experimental\n \t\tfeatures. The new default values are:\n-\t+\n+\n \t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n \tskipping more commits at a time, reducing the number of round trips.\n \n@@ -20,9 +20,9 @@ feature.*::\n \t\tEnable config options that optimize for repos with many files in the\n \t\tworking directory. With many files, commands such as `git status` and\n \t\t`git checkout` may be slow and these new defaults improve performance:\n-\t+\n+\n \t* `index.version=4` enables path-prefix compression in the index.\n-\t+\n+\n \t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n \tthat mtime is working on your machine.\n --\n\nWith the above, the man page output renders identically with\nasciidoc (9.1.0) and asciidoctor (I tested both 2.0.10 and\n2.0.15).\n\nThe asciidoc documentation[1] says:\n\n    If you’re attaching more than one block to a list item,\n    you’re strongly encouraged to wrap the content inside an\n    open block. That way, you only need a single list\n    continuation line to attach the open block to the list\n    item. Within the open block, you write like you normally\n    would, no longer having to worry about adding list\n    continuations between the blocks to keep them attached\n    to the list item.\n\n[1] https://docs.asciidoctor.org/asciidoc/latest/lists/continuation/#list-continuation\n\nOnly mildly related, but while I was looking at the output,\nI noticed that the man page renders the phrase \"The config\nsettings that start with `feature.` modify the defaults\"\noddly.  It places two spaces after the full stop.  It might\nbe worth writing that sentence slightly differently to avoid\nthat.  Maybe something like:\n\n-       The config settings that start with `feature.` modify the defaults of\n+       The `feature.*` variables modify the defaults of\n\n-- \nTodd\n"},{"id":"426271","messageId":"60b80e62b782_16df0720895@natae.notmuch","threadId":"55824","inReplyTo":"20210602203849.GD15354@pobox.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-02T23:04:02Z","receivedAt":"2021-06-02T23:04:06Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Todd Zullinger wrote:\n> --- a/Documentation/config/feature.txt\n> +++ b/Documentation/config/feature.txt\n> @@ -12,7 +12,7 @@ feature.*::\n>  \t\thave unintended interactions since they are so new. Please enable this\n>  \t\tsetting if you are interested in providing feedback on experimental\n>  \t\tfeatures. The new default values are:\n> -\t+\n> +\n>  \t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n>  \tskipping more commits at a time, reducing the number of round trips.\n>  \n> @@ -20,9 +20,9 @@ feature.*::\n>  \t\tEnable config options that optimize for repos with many files in the\n>  \t\tworking directory. With many files, commands such as `git status` and\n>  \t\t`git checkout` may be slow and these new defaults improve performance:\n> -\t+\n> +\n>  \t* `index.version=4` enables path-prefix compression in the index.\n> -\t+\n> +\n>  \t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n>  \tthat mtime is working on your machine.\n>  --\n> \n> With the above, the man page output renders identically with\n> asciidoc (9.1.0) and asciidoctor (I tested both 2.0.10 and\n> 2.0.15).\n\nI can confirm the above looks fine in both.\n\n-- \nFelipe Contreras\n"},{"id":"426304","messageId":"87k0nb77lq.fsf@evledraar.gmail.com","threadId":"55824","inReplyTo":"20210602001132.459705-1-rybak.a.v@gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-06-03T07:02:49Z","receivedAt":"2021-06-03T07:03:36Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Wed, Jun 02 2021, Andrei Rybak wrote:\n\n> Config variables feature.experimental and feature.manyFiles are grouped\n> together under \"feature.*\".  However, this is not easily visible when\n> scanning the help page of git-config.\n>\n> Indent the descriptions of individual feature.* config variables to help\n> the reader distinguish this group of variables.\n>\n> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>\n> ---\n>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------\n>  1 file changed, 21 insertions(+), 19 deletions(-)\n>\n> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt\n> index cdecd04e5b..2c4dee170b 100644\n> --- a/Documentation/config/feature.txt\n> +++ b/Documentation/config/feature.txt\n> @@ -3,24 +3,26 @@ feature.*::\n>  \ta group of other config settings. These groups are created by the Git\n>  \tdeveloper community as recommended defaults and are subject to change.\n>  \tIn particular, new config options may be added with different defaults.\n> -\n> -feature.experimental::\n> -\tEnable config options that are new to Git, and are being considered for\n> -\tfuture defaults. Config settings included here may be added or removed\n> -\twith each release, including minor version updates. These settings may\n> -\thave unintended interactions since they are so new. Please enable this\n> -\tsetting if you are interested in providing feedback on experimental\n> -\tfeatures. The new default values are:\n>  +\n> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n> -skipping more commits at a time, reducing the number of round trips.\n> +--\n> +\tfeature.experimental::\n> +\t\tEnable config options that are new to Git, and are being considered for\n> +\t\tfuture defaults. Config settings included here may be added or removed\n> +\t\twith each release, including minor version updates. These settings may\n> +\t\thave unintended interactions since they are so new. Please enable this\n> +\t\tsetting if you are interested in providing feedback on experimental\n> +\t\tfeatures. The new default values are:\n> +\t+\n> +\t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n> +\tskipping more commits at a time, reducing the number of round trips.\n>  \n> -feature.manyFiles::\n> -\tEnable config options that optimize for repos with many files in the\n> -\tworking directory. With many files, commands such as `git status` and\n> -\t`git checkout` may be slow and these new defaults improve performance:\n> -+\n> -* `index.version=4` enables path-prefix compression in the index.\n> -+\n> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n> -that mtime is working on your machine.\n> +\tfeature.manyFiles::\n> +\t\tEnable config options that optimize for repos with many files in the\n> +\t\tworking directory. With many files, commands such as `git status` and\n> +\t\t`git checkout` may be slow and these new defaults improve performance:\n> +\t+\n> +\t* `index.version=4` enables path-prefix compression in the index.\n> +\t+\n> +\t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n> +\tthat mtime is working on your machine.\n> +--\n\nI don't know if/how this helps readability, but this breaks the\nfeature.* generation of these variables in config-list.h, see\ngenerate-configlist.sh.\n\nSo if you make this change you need to fix that script as well.\n"},{"id":"426306","messageId":"87h7if74vd.fsf@evledraar.gmail.com","threadId":"55824","inReplyTo":"87k0nb77lq.fsf@evledraar.gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-06-03T07:43:35Z","receivedAt":"2021-06-03T08:02:48Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Thu, Jun 03 2021, Ævar Arnfjörð Bjarmason wrote:\n\n> On Wed, Jun 02 2021, Andrei Rybak wrote:\n>\n>> Config variables feature.experimental and feature.manyFiles are grouped\n>> together under \"feature.*\".  However, this is not easily visible when\n>> scanning the help page of git-config.\n>>\n>> Indent the descriptions of individual feature.* config variables to help\n>> the reader distinguish this group of variables.\n>>\n>> Signed-off-by: Andrei Rybak <rybak.a.v@gmail.com>\n>> ---\n>>  Documentation/config/feature.txt | 40 +++++++++++++++++---------------\n>>  1 file changed, 21 insertions(+), 19 deletions(-)\n>>\n>> diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt\n>> index cdecd04e5b..2c4dee170b 100644\n>> --- a/Documentation/config/feature.txt\n>> +++ b/Documentation/config/feature.txt\n>> @@ -3,24 +3,26 @@ feature.*::\n>>  \ta group of other config settings. These groups are created by the Git\n>>  \tdeveloper community as recommended defaults and are subject to change.\n>>  \tIn particular, new config options may be added with different defaults.\n>> -\n>> -feature.experimental::\n>> -\tEnable config options that are new to Git, and are being considered for\n>> -\tfuture defaults. Config settings included here may be added or removed\n>> -\twith each release, including minor version updates. These settings may\n>> -\thave unintended interactions since they are so new. Please enable this\n>> -\tsetting if you are interested in providing feedback on experimental\n>> -\tfeatures. The new default values are:\n>>  +\n>> -* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n>> -skipping more commits at a time, reducing the number of round trips.\n>> +--\n>> +\tfeature.experimental::\n>> +\t\tEnable config options that are new to Git, and are being considered for\n>> +\t\tfuture defaults. Config settings included here may be added or removed\n>> +\t\twith each release, including minor version updates. These settings may\n>> +\t\thave unintended interactions since they are so new. Please enable this\n>> +\t\tsetting if you are interested in providing feedback on experimental\n>> +\t\tfeatures. The new default values are:\n>> +\t+\n>> +\t* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by\n>> +\tskipping more commits at a time, reducing the number of round trips.\n>>  \n>> -feature.manyFiles::\n>> -\tEnable config options that optimize for repos with many files in the\n>> -\tworking directory. With many files, commands such as `git status` and\n>> -\t`git checkout` may be slow and these new defaults improve performance:\n>> -+\n>> -* `index.version=4` enables path-prefix compression in the index.\n>> -+\n>> -* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n>> -that mtime is working on your machine.\n>> +\tfeature.manyFiles::\n>> +\t\tEnable config options that optimize for repos with many files in the\n>> +\t\tworking directory. With many files, commands such as `git status` and\n>> +\t\t`git checkout` may be slow and these new defaults improve performance:\n>> +\t+\n>> +\t* `index.version=4` enables path-prefix compression in the index.\n>> +\t+\n>> +\t* `core.untrackedCache=true` enables the untracked cache. This setting assumes\n>> +\tthat mtime is working on your machine.\n>> +--\n>\n> I don't know if/how this helps readability, but this breaks the\n> feature.* generation of these variables in config-list.h, see\n> generate-configlist.sh.\n>\n> So if you make this change you need to fix that script as well.\n\nBeing a bit more awake I'd prefer not to see this patch go in in its\ncurrent form, here's why:\n\nI've got a WIP series I was going to submit soon that:\n\n 1. Ensures that all config variables are discussed canonically in\n    git-config(1), e.g. for sendemail.* we now point elsewhere.\n\n 2. Adds a \"CONFIGURATION\" section to all relevant manpages, which then\n    include the relevant section(s) for variables that affect those\n    commands.\n\n 3. #2 requires splitting up many of Documentation/config/whatever.txt\n    into Documentation/config/whatever/<sub-lists>.txt, notably things\n    like Documentation/config/color.txt need to become\n    Documentation/config/color/{diff,status,...}.txt so\n    Documentation/git-{status,diff,...}.txt can include them.\n\nThis only works because we don't have something like your proposed patch\nhere.\n\nI.e. asciidoc isn't going to take kindly to feature.manyFiles being\nindented when I include it in git-{status,checkout}.txt, in its\nCONFIGURATION section that'll be either a syntax error, or look out of\nplace.\n\nBut more importantly there seems to just be a better way to do it,\nlooking at the current config file we have the pattern you're trying to\nintroduce for advice.* already, except it's differently formatted, i.e.:\n\n    advice.*\n        SubVariaBle::\n\nBut yours is:\n\n    feature.*\n        feature.SubVariaBle::\n\nThe advice.* ones also have the config-list.h issue I noted. But in any\ncase, it seems to me that the issue is that we group these things at the\ntop-level under git-config(1)'s \"CONFIGURATION FILE\" section, we should\nreally split them into a CONFIGURATION VARIABLES, and then have these\nadvice.* or whatever be a section on the level of the current\n\"Variables\", i.e. something like the incomplete patch below[1].\n\nThat would both look nicer IMO, and allow us to not indent things in\nDocumentation/config/*.txt. If you agree I'd very much like you to pick\nup & run with that alternate approach instead, what do you think?\n\n1.\n\ndiff --git a/Documentation/config.txt b/Documentation/config.txt\nindex bf82766a6a2..5e52b0db1fa 100644\n--- a/Documentation/config.txt\n+++ b/Documentation/config.txt\n@@ -299,9 +299,8 @@ pathname::\n \tis expanded to the value of `$HOME`, and `~user/` to the\n \tspecified user's home directory.\n \n-\n-Variables\n-~~~~~~~~~\n+CONFIGURATION VARIABLES\n+-----------------------\n \n Note that this list is non-comprehensive and not necessarily complete.\n For command-specific variables, you will find a more detailed description\n@@ -312,10 +311,24 @@ inventing new variables for use in your own tool, make sure their\n names do not conflict with those that are used by Git itself and\n other popular tools, and describe them in your documentation.\n \n+\n+advice.*\n+~~~~~~~~\n+\n+These variables control various optional help messages designed to aid\n+new users. All 'advice.*' variables default to 'true', and you can\n+tell Git that you do not need help by setting these to 'false':\n+\n include::config/advice.txt[]\n \n+core.*\n+~~~~~~\n+\n include::config/core.txt[]\n \n+add.*\n+~~~~~\n+\n include::config/add.txt[]\n \n include::config/alias.txt[]\ndiff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt\nindex 8b2849ff7b3..35d6b0e20ff 100644\n--- a/Documentation/config/advice.txt\n+++ b/Documentation/config/advice.txt\n@@ -1,126 +1,119 @@\n-advice.*::\n-\tThese variables control various optional help messages designed to\n-\taid new users. All 'advice.*' variables default to 'true', and you\n-\tcan tell Git that you do not need help by setting these to 'false':\n-+\n---\n-\tfetchShowForcedUpdates::\n-\t\tAdvice shown when linkgit:git-fetch[1] takes a long time\n-\t\tto calculate forced updates after ref updates, or to warn\n-\t\tthat the check is disabled.\n-\tpushUpdateRejected::\n-\t\tSet this variable to 'false' if you want to disable\n-\t\t'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',\n-\t\t'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'\n-\t\tsimultaneously.\n-\tpushNonFFCurrent::\n-\t\tAdvice shown when linkgit:git-push[1] fails due to a\n-\t\tnon-fast-forward update to the current branch.\n-\tpushNonFFMatching::\n-\t\tAdvice shown when you ran linkgit:git-push[1] and pushed\n-\t\t'matching refs' explicitly (i.e. you used ':', or\n-\t\tspecified a refspec that isn't your current branch) and\n-\t\tit resulted in a non-fast-forward error.\n-\tpushAlreadyExists::\n-\t\tShown when linkgit:git-push[1] rejects an update that\n-\t\tdoes not qualify for fast-forwarding (e.g., a tag.)\n-\tpushFetchFirst::\n-\t\tShown when linkgit:git-push[1] rejects an update that\n-\t\ttries to overwrite a remote ref that points at an\n-\t\tobject we do not have.\n-\tpushNeedsForce::\n-\t\tShown when linkgit:git-push[1] rejects an update that\n-\t\ttries to overwrite a remote ref that points at an\n-\t\tobject that is not a commit-ish, or make the remote\n-\t\tref point at an object that is not a commit-ish.\n-\tpushUnqualifiedRefname::\n-\t\tShown when linkgit:git-push[1] gives up trying to\n-\t\tguess based on the source and destination refs what\n-\t\tremote ref namespace the source belongs in, but where\n-\t\twe can still suggest that the user push to either\n-\t\trefs/heads/* or refs/tags/* based on the type of the\n-\t\tsource object.\n-\tpushRefNeedsUpdate::\n-\t\tShown when linkgit:git-push[1] rejects a forced update of\n-\t\ta branch when its remote-tracking ref has updates that we\n-\t\tdo not have locally.\n-\tstatusAheadBehind::\n-\t\tShown when linkgit:git-status[1] computes the ahead/behind\n-\t\tcounts for a local ref compared to its remote tracking ref,\n-\t\tand that calculation takes longer than expected. Will not\n-\t\tappear if `status.aheadBehind` is false or the option\n-\t\t`--no-ahead-behind` is given.\n-\tstatusHints::\n-\t\tShow directions on how to proceed from the current\n-\t\tstate in the output of linkgit:git-status[1], in\n-\t\tthe template shown when writing commit messages in\n-\t\tlinkgit:git-commit[1], and in the help message shown\n-\t\tby linkgit:git-switch[1] or\n-\t\tlinkgit:git-checkout[1] when switching branch.\n-\tstatusUoption::\n-\t\tAdvise to consider using the `-u` option to linkgit:git-status[1]\n-\t\twhen the command takes more than 2 seconds to enumerate untracked\n-\t\tfiles.\n-\tcommitBeforeMerge::\n-\t\tAdvice shown when linkgit:git-merge[1] refuses to\n-\t\tmerge to avoid overwriting local changes.\n-\tresetQuiet::\n-\t\tAdvice to consider using the `--quiet` option to linkgit:git-reset[1]\n-\t\twhen the command takes more than 2 seconds to enumerate unstaged\n-\t\tchanges after reset.\n-\tresolveConflict::\n-\t\tAdvice shown by various commands when conflicts\n-\t\tprevent the operation from being performed.\n-\tsequencerInUse::\n-\t\tAdvice shown when a sequencer command is already in progress.\n-\timplicitIdentity::\n-\t\tAdvice on how to set your identity configuration when\n-\t\tyour information is guessed from the system username and\n-\t\tdomain name.\n-\tdetachedHead::\n-\t\tAdvice shown when you used\n-\t\tlinkgit:git-switch[1] or linkgit:git-checkout[1]\n-\t\tto move to the detach HEAD state, to instruct how to\n-\t\tcreate a local branch after the fact.\n-\tcheckoutAmbiguousRemoteBranchName::\n-\t\tAdvice shown when the argument to\n-\t\tlinkgit:git-checkout[1] and linkgit:git-switch[1]\n-\t\tambiguously resolves to a\n-\t\tremote tracking branch on more than one remote in\n-\t\tsituations where an unambiguous argument would have\n-\t\totherwise caused a remote-tracking branch to be\n-\t\tchecked out. See the `checkout.defaultRemote`\n-\t\tconfiguration variable for how to set a given remote\n-\t\tto used by default in some situations where this\n-\t\tadvice would be printed.\n-\tamWorkDir::\n-\t\tAdvice that shows the location of the patch file when\n-\t\tlinkgit:git-am[1] fails to apply it.\n-\trmHints::\n-\t\tIn case of failure in the output of linkgit:git-rm[1],\n-\t\tshow directions on how to proceed from the current state.\n-\taddEmbeddedRepo::\n-\t\tAdvice on what to do when you've accidentally added one\n-\t\tgit repo inside of another.\n-\tignoredHook::\n-\t\tAdvice shown if a hook is ignored because the hook is not\n-\t\tset as executable.\n-\twaitingForEditor::\n-\t\tPrint a message to the terminal whenever Git is waiting for\n-\t\teditor input from the user.\n-\tnestedTag::\n-\t\tAdvice shown if a user attempts to recursively tag a tag object.\n-\tsubmoduleAlternateErrorStrategyDie::\n-\t\tAdvice shown when a submodule.alternateErrorStrategy option\n-\t\tconfigured to \"die\" causes a fatal error.\n-\taddIgnoredFile::\n-\t\tAdvice shown if a user attempts to add an ignored file to\n-\t\tthe index.\n-\taddEmptyPathspec::\n-\t\tAdvice shown if a user runs the add command without providing\n-\t\tthe pathspec parameter.\n-\tupdateSparsePath::\n-\t\tAdvice shown when either linkgit:git-add[1] or linkgit:git-rm[1]\n-\t\tis asked to update index entries outside the current sparse\n-\t\tcheckout.\n---\n+advice.*fetchShowForcedUpdates::\n+\tAdvice shown when linkgit:git-fetch[1] takes a long time\n+\tto calculate forced updates after ref updates, or to warn\n+\tthat the check is disabled.\n+advice.pushUpdateRejected::\n+\tSet this variable to 'false' if you want to disable\n+\t'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',\n+\t'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'\n+\tsimultaneously.\n+advice.pushNonFFCurrent::\n+\tAdvice shown when linkgit:git-push[1] fails due to a\n+\tnon-fast-forward update to the current branch.\n+advice.pushNonFFMatching::\n+\tAdvice shown when you ran linkgit:git-push[1] and pushed\n+\t'matching refs' explicitly (i.e. you used ':', or\n+\tspecified a refspec that isn't your current branch) and\n+\tit resulted in a non-fast-forward error.\n+advice.pushAlreadyExists::\n+\tShown when linkgit:git-push[1] rejects an update that\n+\tdoes not qualify for fast-forwarding (e.g., a tag.)\n+pushFetchFirst::\n+\tShown when linkgit:git-push[1] rejects an update that\n+\ttries to overwrite a remote ref that points at an\n+\tobject we do not have.\n+pushNeedsForce::\n+\tShown when linkgit:git-push[1] rejects an update that\n+\ttries to overwrite a remote ref that points at an\n+\tobject that is not a commit-ish, or make the remote\n+\tref point at an object that is not a commit-ish.\n+pushUnqualifiedRefname::\n+\tShown when linkgit:git-push[1] gives up trying to\n+\tguess based on the source and destination refs what\n+\tremote ref namespace the source belongs in, but where\n+\twe can still suggest that the user push to either\n+\trefs/heads/* or refs/tags/* based on the type of the\n+\tsource object.\n+pushRefNeedsUpdate::\n+\tShown when linkgit:git-push[1] rejects a forced update of\n+\ta branch when its remote-tracking ref has updates that we\n+\tdo not have locally.\n+statusAheadBehind::\n+\tShown when linkgit:git-status[1] computes the ahead/behind\n+\tcounts for a local ref compared to its remote tracking ref,\n+\tand that calculation takes longer than expected. Will not\n+\tappear if `status.aheadBehind` is false or the option\n+\t`--no-ahead-behind` is given.\n+statusHints::\n+\tShow directions on how to proceed from the current\n+\tstate in the output of linkgit:git-status[1], in\n+\tthe template shown when writing commit messages in\n+\tlinkgit:git-commit[1], and in the help message shown\n+\tby linkgit:git-switch[1] or\n+\tlinkgit:git-checkout[1] when switching branch.\n+statusUoption::\n+\tAdvise to consider using the `-u` option to linkgit:git-status[1]\n+\twhen the command takes more than 2 seconds to enumerate untracked\n+\tfiles.\n+commitBeforeMerge::\n+\tAdvice shown when linkgit:git-merge[1] refuses to\n+\tmerge to avoid overwriting local changes.\n+resetQuiet::\n+\tAdvice to consider using the `--quiet` option to linkgit:git-reset[1]\n+\twhen the command takes more than 2 seconds to enumerate unstaged\n+\tchanges after reset.\n+resolveConflict::\n+\tAdvice shown by various commands when conflicts\n+\tprevent the operation from being performed.\n+sequencerInUse::\n+\tAdvice shown when a sequencer command is already in progress.\n+implicitIdentity::\n+\tAdvice on how to set your identity configuration when\n+\tyour information is guessed from the system username and\n+\tdomain name.\n+detachedHead::\n+\tAdvice shown when you used\n+\tlinkgit:git-switch[1] or linkgit:git-checkout[1]\n+\tto move to the detach HEAD state, to instruct how to\n+\tcreate a local branch after the fact.\n+checkoutAmbiguousRemoteBranchName::\n+\tAdvice shown when the argument to\n+\tlinkgit:git-checkout[1] and linkgit:git-switch[1]\n+\tambiguously resolves to a\n+\tremote tracking branch on more than one remote in\n+\tsituations where an unambiguous argument would have\n+\totherwise caused a remote-tracking branch to be\n+\tchecked out. See the `checkout.defaultRemote`\n+\tconfiguration variable for how to set a given remote\n+\tto used by default in some situations where this\n+\tadvice would be printed.\n+amWorkDir::\n+\tAdvice that shows the location of the patch file when\n+\tlinkgit:git-am[1] fails to apply it.\n+rmHints::\n+\tIn case of failure in the output of linkgit:git-rm[1],\n+\tshow directions on how to proceed from the current state.\n+addEmbeddedRepo::\n+\tAdvice on what to do when you've accidentally added one\n+\tgit repo inside of another.\n+ignoredHook::\n+\tAdvice shown if a hook is ignored because the hook is not\n+\tset as executable.\n+waitingForEditor::\n+\tPrint a message to the terminal whenever Git is waiting for\n+\teditor input from the user.\n+nestedTag::\n+\tAdvice shown if a user attempts to recursively tag a tag object.\n+submoduleAlternateErrorStrategyDie::\n+\tAdvice shown when a submodule.alternateErrorStrategy option\n+\tconfigured to \"die\" causes a fatal error.\n+addIgnoredFile::\n+\tAdvice shown if a user attempts to add an ignored file to\n+\tthe index.\n+addEmptyPathspec::\n+\tAdvice shown if a user runs the add command without providing\n+\tthe pathspec parameter.\n+updateSparsePath::\n+\tAdvice shown when either linkgit:git-add[1] or linkgit:git-rm[1]\n+\tis asked to update index entries outside the current sparse\n+\tcheckout.\n"},{"id":"426337","messageId":"60b9196c238c_2588012081d@natae.notmuch","threadId":"55824","inReplyTo":"87h7if74vd.fsf@evledraar.gmail.com","subject":"Re: [PATCH] config doc: indent descriptions of feature.* variables","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-03T18:03:24Z","receivedAt":"2021-06-03T18:03:41Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Ævar Arnfjörð Bjarmason wrote:\n> --- a/Documentation/config.txt\n> +++ b/Documentation/config.txt\n> @@ -299,9 +299,8 @@ pathname::\n>  \tis expanded to the value of `$HOME`, and `~user/` to the\n>  \tspecified user's home directory.\n>  \n> -\n> -Variables\n> -~~~~~~~~~\n> +CONFIGURATION VARIABLES\n> +-----------------------\n>  \n>  Note that this list is non-comprehensive and not necessarily complete.\n>  For command-specific variables, you will find a more detailed description\n> @@ -312,10 +311,24 @@ inventing new variables for use in your own tool, make sure their\n>  names do not conflict with those that are used by Git itself and\n>  other popular tools, and describe them in your documentation.\n>  \n> +\n> +advice.*\n> +~~~~~~~~\n> +\n> +These variables control various optional help messages designed to aid\n> +new users. All 'advice.*' variables default to 'true', and you can\n> +tell Git that you do not need help by setting these to 'false':\n> +\n>  include::config/advice.txt[]\n>  \n> +core.*\n> +~~~~~~\n> +\n>  include::config/core.txt[]\n>  \n> +add.*\n> +~~~~~\n> +\n>  include::config/add.txt[]\n\nThis looks much better to me. +1\n\n>  include::config/alias.txt[]\n> diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt\n> index 8b2849ff7b3..35d6b0e20ff 100644\n> --- a/Documentation/config/advice.txt\n> +++ b/Documentation/config/advice.txt\n> @@ -1,126 +1,119 @@\n> -advice.*::\n> -\tThese variables control various optional help messages designed to\n> -\taid new users. All 'advice.*' variables default to 'true', and you\n> -\tcan tell Git that you do not need help by setting these to 'false':\n> -+\n> ---\n\n...\n\n> ---\n> +advice.*fetchShowForcedUpdates::\n> +\tAdvice shown when linkgit:git-fetch[1] takes a long time\n> +\tto calculate forced updates after ref updates, or to warn\n> +\tthat the check is disabled.\n> +advice.pushUpdateRejected::\n> +\tSet this variable to 'false' if you want to disable\n> +\t'pushNonFFCurrent', 'pushNonFFMatching', 'pushAlreadyExists',\n> +\t'pushFetchFirst', 'pushNeedsForce', and 'pushRefNeedsUpdate'\n> +\tsimultaneously.\n> +advice.pushNonFFCurrent::\n> +\tAdvice shown when linkgit:git-push[1] fails due to a\n> +\tnon-fast-forward update to the current branch.\n> +advice.pushNonFFMatching::\n> +\tAdvice shown when you ran linkgit:git-push[1] and pushed\n> +\t'matching refs' explicitly (i.e. you used ':', or\n> +\tspecified a refspec that isn't your current branch) and\n> +\tit resulted in a non-fast-forward error.\n> +advice.pushAlreadyExists::\n> +\tShown when linkgit:git-push[1] rejects an update that\n> +\tdoes not qualify for fast-forwarding (e.g., a tag.)\n> +pushFetchFirst::\n\nI presume this also has the 'advice.' prefix added (and so do the rest),\nit was just an example patch.\n\nCheers.\n\n-- \nFelipe Contreras"}]}