{"thread":{"id":"62077","subject":"What's cooking draft as of 2024-09-06 late night","startedAt":"2024-09-07T05:41:21Z","lastAt":"2024-09-10T14:41:46Z","messageCount":9,"participants":["Junio C Hamano","Phillip Wood","Shubham Kanodia"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"502385","messageId":"xmqq7cboyq9s.fsf@gitster.g","threadId":"62077","inReplyTo":null,"subject":"What's cooking draft as of 2024-09-06 late night","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-07T05:41:19Z","receivedAt":"2024-09-07T05:41:21Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This is not the full list of topics in master..seen but just a\nselected subset.  I am hoping that the topics marked for 'next' are\nalready ready but if I missed some objections, please let me know.\n\nThanks.\n\n\nNeeds review.\n - tb/incremental-midx-part-2                                   08-28         #16\n   <cover.1723760847.git.me@ttaylorr.com>\n - ps/environ-wo-the-repository                                 08-30         #21\n   <cover.1725008897.git.ps@pks.im>\n - jc/pass-repo-to-builtins                                     09-05          #4\n   <pull.1778.git.git.1725555467.gitgitgadget@gmail.com>\n - ja/doc-synopsis-markup                                       09-05          #3\n   <pull.1766.v4.git.1725573126.gitgitgadget@gmail.com>\n\nWill merge to 'master'.\n + jk/free-commit-buffer-of-skipped-commits                     08-30/09-03    #1\n + ah/mergetols-vscode                                          09-01/09-04    #1\n + rj/compat-terminal-unused-fix                                09-01/09-04    #1\n + ps/declare-pack-redundamt-dead                               09-03/09-04    #1\n + jc/mailinfo-header-cleanup                                   08-20/09-05    #1\n + gt/unit-test-oid-array                                       09-01/09-05    #1\n + ps/index-pack-outside-repo-fix                               09-04/09-05    #1\n + ps/clar-unit-test                                            09-04/09-05   #14\n + tb/multi-pack-reuse-fix                                      08-27/09-06    #5\n + kl/cat-file-on-sparse-index                                  09-04/09-06    #2\n + ps/pack-refs-auto-heuristics                                 09-04/09-06    #3\n + jk/messages-with-excess-lf-fix                               09-05/09-06    #1\n\nWill merge to 'next'.\n - ds/doc-wholesale-disabling-advice-messages                   09-06          #1\n - jk/sparse-fdleak-fix                                         09-06          #3\n - sp/mailmap                                                   09-06          #1\n - ds/scalar-no-tags                                            09-06          #1\n\nWill merge to 'next'?\n - pw/rebase-autostash-fix                                      09-03          #1\n   <pull.1772.v2.git.1725289979450.gitgitgadget@gmail.com>\n - sk/enable-prefetch-per-remote                                09-05          #1\n   <pull.1779.v4.git.1725565398681.gitgitgadget@gmail.com>\n - ps/leakfixes-part-6                                          09-05         #22\n   <cover.1725530720.git.ps@pks.im>\n - bl/trailers-and-incomplete-last-line-fix                     09-06          #1\n   <20240906145743.2059405-1-brianmlyles@gmail.com>\n - tb/weak-sha1-for-tail-sum                                    09-06          #9\n   <cover.1725651952.git.me@ttaylorr.com>\n"},{"id":"502387","messageId":"899eb2c2-bb18-4666-98d8-9255dedfac53@gmail.com","threadId":"62077","inReplyTo":"xmqq7cboyq9s.fsf@gitster.g","subject":"Re: What's cooking draft as of 2024-09-06 late night","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2024-09-07T09:17:32Z","receivedAt":"2024-09-07T09:17:38Z","isPatch":false,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Junio and Shubham\n\nOn 07/09/2024 06:41, Junio C Hamano wrote:\n> Will merge to 'next'?\n>   - sk/enable-prefetch-per-remote                                09-05          #1\n>     <pull.1779.v4.git.1725565398681.gitgitgadget@gmail.com>\n\nI've just taken a look at this and I'm left wondering why one would want \nto skip prefetching from a remote but still fetch from it with \"git \nfetch --all\". I set remote.<remote>.skipFetchAll for the remotes I don't \nwant to prefetch. We also have remote.<remote>.skipDefaultUpdate I don't \nknow offhand if that prevents a remote from being prefetched as well.\nI think being able to specify which refs are prefectched would be \nuseful. Overloading remote.<remote>.prefetch to be a boolean or a \nrefspec would complicate the implementation so maybe we'd be better just \nsupporting refspecs and update the maintenance documentation to point \nusers to the existing config for skipping prefetches.\n\nBest Wishes\n\nPhillip\n"},{"id":"502392","messageId":"xmqq8qw3xvob.fsf_-_@gitster.g","threadId":"62077","inReplyTo":"899eb2c2-bb18-4666-98d8-9255dedfac53@gmail.com","subject":"Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-07T16:42:12Z","receivedAt":"2024-09-07T16:42:15Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Phillip Wood <phillip.wood123@gmail.com> writes:\n\n> Hi Junio and Shubham\n>\n> On 07/09/2024 06:41, Junio C Hamano wrote:\n>> Will merge to 'next'?\n>>   - sk/enable-prefetch-per-remote                                09-05          #1\n>>     <pull.1779.v4.git.1725565398681.gitgitgadget@gmail.com>\n>\n> I've just taken a look at this and I'm left wondering why one would\n> want to skip prefetching from a remote but still fetch from it with\n> \"git fetch --all\". I set remote.<remote>.skipFetchAll for the remotes\n> I don't want to prefetch.\n\nIt is nice to see a review from somebody who fetches from multiple\nremotes in real life.  Very much appreciated.  I have a few\nrepositories to pull from, but I never do \"fetch --all\", so\nskipFetchAll was totally outside my awareness.\n\n> We also have remote.<remote>.skipDefaultUpdate I don't know\n> offhand if that prevents a remote from being prefetched as well.\n\nYuck.  And this one is described with an identical text as the\nprevious one.  What is going on?\n\n    ... goes and looks ...\n\nAh, yes, they internally update the same .skip_default_update member\nin the struct remote; the only bug is that the documentation does\nnot make it clear that they are synonyms to each other.\n\nWhat is curious is that 7cc91a2f (Add the configuration option\nskipFetchAll, 2009-11-09) added for the sole purpose of adding this\none, without explaining anything about the reason why it was needed,\nand my quick browsing did not find any discussion on the topic in\nthe era.\n\nIn any case, a remote that has .skip_default_update member set\nindeed is exempt from prefetch since 32f67888 (maintenance: respect\nremote.*.skipFetchAll, 2021-04-16), so it is a viable alternative\n(assuming that nobody would want to omit prefetching from a remote\neven if they want to fetch from the remote with \"fetch --all\" or\n\"remote update\", which is a sensible assumption) to just document\nthis existing behaviour to help the users.\n\n> I think being able to specify which refs are prefectched would be\n> useful.\n\nYes, that is what we said it is OK to punt in the first step, which\nis fine to be done in the follow-up step.\n\n--- >8 ---\nSubject: doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch\n\nBack when 7cc91a2f (Add the configuration option skipFetchAll,\n2009-11-09) added for the sole purpose of adding skipFetchAll as a\nsynonym to skipDefaultUpdate, there was no explanation about the\nreason why it was needed., but these two configuration variables\nmean exactly the same thing.\n\nAlso, when we taught the \"prefetch\" task to \"git maintenance\" later,\nwe did make it pay attention to the setting, but we forgot to\ndocument it.\n\nDocument these variables as synonyms that collectively implements\nthe last-one-wins semantics, and also clarify that the prefetch task\nis also controlled by this variable.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n * Note that \"skipped by default\" in the original has been rewritten\n   to \"skipped\" (unconditional), and this is deliberate.  When there\n   is no conditionality and the behaviour is the only available one,\n   it is *not* \"by default\".\n\n Documentation/config/remote.txt   | 13 +++++++------\n Documentation/git-maintenance.txt |  3 +++\n 2 files changed, 10 insertions(+), 6 deletions(-)\n\ndiff --git c/Documentation/config/remote.txt w/Documentation/config/remote.txt\nindex 8efc53e836..36e771556c 100644\n--- c/Documentation/config/remote.txt\n+++ w/Documentation/config/remote.txt\n@@ -42,14 +42,15 @@ remote.<name>.mirror::\n \tas if the `--mirror` option was given on the command line.\n \n remote.<name>.skipDefaultUpdate::\n-\tIf true, this remote will be skipped by default when updating\n-\tusing linkgit:git-fetch[1] or the `update` subcommand of\n-\tlinkgit:git-remote[1].\n+\tA deprecated synonym to `remote.<name>.skipFetchAll` (if\n+\tboth are set in the configuration files with different\n+\tvalues, the value of the last occurrence will be used).\n \n remote.<name>.skipFetchAll::\n-\tIf true, this remote will be skipped by default when updating\n-\tusing linkgit:git-fetch[1] or the `update` subcommand of\n-\tlinkgit:git-remote[1].\n+\tIf true, this remote will be skipped when updating\n+\tusing linkgit:git-fetch[1], the `update` subcommand of\n+\tlinkgit:git-remote[1], and ignored by the prefetch task\n+\tof `git maitenance`.\n \n remote.<name>.receivepack::\n \tThe default program to execute on the remote side when pushing.  See\ndiff --git c/Documentation/git-maintenance.txt w/Documentation/git-maintenance.txt\nindex 51d0f7e94b..9d96819133 100644\n--- c/Documentation/git-maintenance.txt\n+++ w/Documentation/git-maintenance.txt\n@@ -107,6 +107,9 @@ with the prefetch task, the objects necessary to complete a later real fetch\n would already be obtained, making the real fetch faster.  In the ideal case,\n it will just become an update to a bunch of remote-tracking branches without\n any object transfer.\n++\n+The `remote.<name>.skipFetchAll` configuration can be used to\n+exclude a particular remote from getting prefetched.\n \n gc::\n \tClean up unnecessary files and optimize the local repository. \"GC\"\n"},{"id":"502396","messageId":"CAG=Um+0X3Umt-2TQ-BGeefqdGxfVoy2Ug0tGKLycrX=_pj=oJw@mail.gmail.com","threadId":"62077","inReplyTo":"xmqq8qw3xvob.fsf_-_@gitster.g","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Shubham Kanodia","fromEmail":"shubham.kanodia10@gmail.com","sentAt":"2024-09-07T19:33:37Z","receivedAt":"2024-09-07T19:34:15Z","isPatch":false,"sender":{"key":"shubham.kanodia10@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8946207?v=4"},"body":"On Sat, Sep 7, 2024 at 10:12 PM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> Phillip Wood <phillip.wood123@gmail.com> writes:\n>\n> > Hi Junio and Shubham\n> >\n> > On 07/09/2024 06:41, Junio C Hamano wrote:\n> >> Will merge to 'next'?\n> >>   - sk/enable-prefetch-per-remote                                09-05          #1\n> >>     <pull.1779.v4.git.1725565398681.gitgitgadget@gmail.com>\n> >\n> > I've just taken a look at this and I'm left wondering why one would\n> > want to skip prefetching from a remote but still fetch from it with\n> > \"git fetch --all\". I set remote.<remote>.skipFetchAll for the remotes\n> > I don't want to prefetch.\n>\n> It is nice to see a review from somebody who fetches from multiple\n> remotes in real life.  Very much appreciated.  I have a few\n> repositories to pull from, but I never do \"fetch --all\", so\n> skipFetchAll was totally outside my awareness.\n>\n> > We also have remote.<remote>.skipDefaultUpdate I don't know\n> > offhand if that prevents a remote from being prefetched as well.\n>\n> Yuck.  And this one is described with an identical text as the\n> previous one.  What is going on?\n>\n>     ... goes and looks ...\n>\n> Ah, yes, they internally update the same .skip_default_update member\n> in the struct remote; the only bug is that the documentation does\n> not make it clear that they are synonyms to each other.\n>\n> What is curious is that 7cc91a2f (Add the configuration option\n> skipFetchAll, 2009-11-09) added for the sole purpose of adding this\n> one, without explaining anything about the reason why it was needed,\n> and my quick browsing did not find any discussion on the topic in\n> the era.\n>\n> In any case, a remote that has .skip_default_update member set\n> indeed is exempt from prefetch since 32f67888 (maintenance: respect\n> remote.*.skipFetchAll, 2021-04-16), so it is a viable alternative\n> (assuming that nobody would want to omit prefetching from a remote\n> even if they want to fetch from the remote with \"fetch --all\" or\n> \"remote update\", which is a sensible assumption) to just document\n> this existing behaviour to help the users.\n>\n> > I think being able to specify which refs are prefectched would be\n> > useful.\n>\n> Yes, that is what we said it is OK to punt in the first step, which\n> is fine to be done in the follow-up step.\n>\n> --- >8 ---\n> Subject: doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch\n>\n> Back when 7cc91a2f (Add the configuration option skipFetchAll,\n> 2009-11-09) added for the sole purpose of adding skipFetchAll as a\n> synonym to skipDefaultUpdate, there was no explanation about the\n> reason why it was needed., but these two configuration variables\n> mean exactly the same thing.\n>\n> Also, when we taught the \"prefetch\" task to \"git maintenance\" later,\n> we did make it pay attention to the setting, but we forgot to\n> document it.\n>\n> Document these variables as synonyms that collectively implements\n> the last-one-wins semantics, and also clarify that the prefetch task\n> is also controlled by this variable.\n>\n> Signed-off-by: Junio C Hamano <gitster@pobox.com>\n> ---\n>  * Note that \"skipped by default\" in the original has been rewritten\n>    to \"skipped\" (unconditional), and this is deliberate.  When there\n>    is no conditionality and the behaviour is the only available one,\n>    it is *not* \"by default\".\n>\n>  Documentation/config/remote.txt   | 13 +++++++------\n>  Documentation/git-maintenance.txt |  3 +++\n>  2 files changed, 10 insertions(+), 6 deletions(-)\n>\n> diff --git c/Documentation/config/remote.txt w/Documentation/config/remote.txt\n> index 8efc53e836..36e771556c 100644\n> --- c/Documentation/config/remote.txt\n> +++ w/Documentation/config/remote.txt\n> @@ -42,14 +42,15 @@ remote.<name>.mirror::\n>         as if the `--mirror` option was given on the command line.\n>\n>  remote.<name>.skipDefaultUpdate::\n> -       If true, this remote will be skipped by default when updating\n> -       using linkgit:git-fetch[1] or the `update` subcommand of\n> -       linkgit:git-remote[1].\n> +       A deprecated synonym to `remote.<name>.skipFetchAll` (if\n> +       both are set in the configuration files with different\n> +       values, the value of the last occurrence will be used).\n>\n>  remote.<name>.skipFetchAll::\n> -       If true, this remote will be skipped by default when updating\n> -       using linkgit:git-fetch[1] or the `update` subcommand of\n> -       linkgit:git-remote[1].\n> +       If true, this remote will be skipped when updating\n> +       using linkgit:git-fetch[1], the `update` subcommand of\n> +       linkgit:git-remote[1], and ignored by the prefetch task\n> +       of `git maitenance`.\n>\n>  remote.<name>.receivepack::\n>         The default program to execute on the remote side when pushing.  See\n> diff --git c/Documentation/git-maintenance.txt w/Documentation/git-maintenance.txt\n> index 51d0f7e94b..9d96819133 100644\n> --- c/Documentation/git-maintenance.txt\n> +++ w/Documentation/git-maintenance.txt\n> @@ -107,6 +107,9 @@ with the prefetch task, the objects necessary to complete a later real fetch\n>  would already be obtained, making the real fetch faster.  In the ideal case,\n>  it will just become an update to a bunch of remote-tracking branches without\n>  any object transfer.\n> ++\n> +The `remote.<name>.skipFetchAll` configuration can be used to\n> +exclude a particular remote from getting prefetched.\n>\n>  gc::\n>         Clean up unnecessary files and optimize the local repository. \"GC\"\n\nI agree — there are rarely reasons to keep a different fetch behavior\nfor prefetch vs. fetch all, and `skipFetchAll` should\ndo the trick for most use cases. My original goal was to restrict refs\nanyway, I don't work with multiple remotes either.\n\nI'd have perhaps expected these properties to be documented (or at\nleast referenced) in the documentation for `git-fetch`.\nThe only place `skipFetchAll` is currently documented is in this large\nmaster list of configs that are easy to miss —\nhttps://git-scm.com/docs/git-config.\n\nIf there's a consensus, I'll switch to submitting a patch for\n`prefetchref` instead.\n\n`\n"},{"id":"502424","messageId":"125aab1b-d017-45c1-b93c-ee43fef9bd71@gmail.com","threadId":"62077","inReplyTo":"CAG=Um+0X3Umt-2TQ-BGeefqdGxfVoy2Ug0tGKLycrX=_pj=oJw@mail.gmail.com","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2024-09-09T09:13:07Z","receivedAt":"2024-09-09T09:13:13Z","isPatch":false,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Shubham\n\nOn 07/09/2024 20:33, Shubham Kanodia wrote:\n> \n> I agree — there are rarely reasons to keep a different fetch behavior\n> for prefetch vs. fetch all, and `skipFetchAll` should\n> do the trick for most use cases. My original goal was to restrict refs\n> anyway, I don't work with multiple remotes either.\n> \n> I'd have perhaps expected these properties to be documented (or at\n> least referenced) in the documentation for `git-fetch`.\n> The only place `skipFetchAll` is currently documented is in this large\n> master list of configs that are easy to miss —\n> https://git-scm.com/docs/git-config.\n\nWe could perhaps expand the documentation of `git fetch --all` to \nmention skipFetchAll\n\n> If there's a consensus, I'll switch to submitting a patch for\n> `prefetchref` instead.\n\nI think that would be a useful addition. Given the names of the existing \nrefspec variables end '.fetch' and '.push' I'd be tempted to call it \n'remote.<remote>.prefetch'.\n\nBest Wishes\n\nPhillip\n"},{"id":"502425","messageId":"72635041-576e-42d5-9e12-13e9572b2cf7@gmail.com","threadId":"62077","inReplyTo":"xmqq8qw3xvob.fsf_-_@gitster.g","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2024-09-09T09:13:14Z","receivedAt":"2024-09-09T09:13:17Z","isPatch":false,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Junio\n\nOn 07/09/2024 17:42, Junio C Hamano wrote:\n> --- >8 ---\n> Subject: doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch\n> \n> Back when 7cc91a2f (Add the configuration option skipFetchAll,\n> 2009-11-09) added for the sole purpose of adding skipFetchAll as a\n> synonym to skipDefaultUpdate, there was no explanation about the\n> reason why it was needed., but these two configuration variables\n> mean exactly the same thing.\n> \n> Also, when we taught the \"prefetch\" task to \"git maintenance\" later,\n> we did make it pay attention to the setting, but we forgot to\n> document it.\n> \n> Document these variables as synonyms that collectively implements\n> the last-one-wins semantics, and also clarify that the prefetch task\n> is also controlled by this variable.\n> \n> Signed-off-by: Junio C Hamano <gitster@pobox.com>\n> ---\n>   * Note that \"skipped by default\" in the original has been rewritten\n>     to \"skipped\" (unconditional), and this is deliberate.  When there\n>     is no conditionality and the behaviour is the only available one,\n>     it is *not* \"by default\".\n\nThis all sounds sensible, the patch looks good to me\n\nBest Wishes\n\nPhillip\n\n>   Documentation/config/remote.txt   | 13 +++++++------\n>   Documentation/git-maintenance.txt |  3 +++\n>   2 files changed, 10 insertions(+), 6 deletions(-)\n> \n> diff --git c/Documentation/config/remote.txt w/Documentation/config/remote.txt\n> index 8efc53e836..36e771556c 100644\n> --- c/Documentation/config/remote.txt\n> +++ w/Documentation/config/remote.txt\n> @@ -42,14 +42,15 @@ remote.<name>.mirror::\n>   \tas if the `--mirror` option was given on the command line.\n>   \n>   remote.<name>.skipDefaultUpdate::\n> -\tIf true, this remote will be skipped by default when updating\n> -\tusing linkgit:git-fetch[1] or the `update` subcommand of\n> -\tlinkgit:git-remote[1].\n> +\tA deprecated synonym to `remote.<name>.skipFetchAll` (if\n> +\tboth are set in the configuration files with different\n> +\tvalues, the value of the last occurrence will be used).\n>   \n>   remote.<name>.skipFetchAll::\n> -\tIf true, this remote will be skipped by default when updating\n> -\tusing linkgit:git-fetch[1] or the `update` subcommand of\n> -\tlinkgit:git-remote[1].\n> +\tIf true, this remote will be skipped when updating\n> +\tusing linkgit:git-fetch[1], the `update` subcommand of\n> +\tlinkgit:git-remote[1], and ignored by the prefetch task\n> +\tof `git maitenance`.\n>   \n>   remote.<name>.receivepack::\n>   \tThe default program to execute on the remote side when pushing.  See\n> diff --git c/Documentation/git-maintenance.txt w/Documentation/git-maintenance.txt\n> index 51d0f7e94b..9d96819133 100644\n> --- c/Documentation/git-maintenance.txt\n> +++ w/Documentation/git-maintenance.txt\n> @@ -107,6 +107,9 @@ with the prefetch task, the objects necessary to complete a later real fetch\n>   would already be obtained, making the real fetch faster.  In the ideal case,\n>   it will just become an update to a bunch of remote-tracking branches without\n>   any object transfer.\n> ++\n> +The `remote.<name>.skipFetchAll` configuration can be used to\n> +exclude a particular remote from getting prefetched.\n>   \n>   gc::\n>   \tClean up unnecessary files and optimize the local repository. \"GC\"\n> \n"},{"id":"502460","messageId":"xmqqseu8u8m0.fsf@gitster.g","threadId":"62077","inReplyTo":"125aab1b-d017-45c1-b93c-ee43fef9bd71@gmail.com","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-09T15:53:11Z","receivedAt":"2024-09-09T15:53:14Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Phillip Wood <phillip.wood123@gmail.com> writes:\n\n>> The only place `skipFetchAll` is currently documented is in this large\n>> master list of configs that are easy to miss —\n>> https://git-scm.com/docs/git-config.\n>\n> We could perhaps expand the documentation of `git fetch --all` to\n> mention skipFetchAll\n\nLike this (interdiff at the end)?\n\n--- >8 ---\nSubject: [PATCH v2] doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch\n\nBack when 7cc91a2f (Add the configuration option skipFetchAll,\n2009-11-09) added for the sole purpose of adding skipFetchAll as a\nsynonym to skipDefaultUpdate, there was no explanation about the\nreason why it was needed., but these two configuration variables\nmean exactly the same thing.\n\nAlso, when we taught the \"prefetch\" task to \"git maintenance\" later,\nwe did make it pay attention to the setting, but we forgot to\ndocument it.\n\nDocument these variables as synonyms that collectively implements\nthe last-one-wins semantics, and also clarify that the prefetch task\nis also controlled by this variable.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n Documentation/config/remote.txt   | 13 +++++++------\n Documentation/fetch-options.txt   |  5 +++--\n Documentation/git-maintenance.txt |  3 +++\n 3 files changed, 13 insertions(+), 8 deletions(-)\n\ndiff --git a/Documentation/config/remote.txt b/Documentation/config/remote.txt\nindex 8efc53e836..36e771556c 100644\n--- a/Documentation/config/remote.txt\n+++ b/Documentation/config/remote.txt\n@@ -42,14 +42,15 @@ remote.<name>.mirror::\n \tas if the `--mirror` option was given on the command line.\n \n remote.<name>.skipDefaultUpdate::\n-\tIf true, this remote will be skipped by default when updating\n-\tusing linkgit:git-fetch[1] or the `update` subcommand of\n-\tlinkgit:git-remote[1].\n+\tA deprecated synonym to `remote.<name>.skipFetchAll` (if\n+\tboth are set in the configuration files with different\n+\tvalues, the value of the last occurrence will be used).\n \n remote.<name>.skipFetchAll::\n-\tIf true, this remote will be skipped by default when updating\n-\tusing linkgit:git-fetch[1] or the `update` subcommand of\n-\tlinkgit:git-remote[1].\n+\tIf true, this remote will be skipped when updating\n+\tusing linkgit:git-fetch[1], the `update` subcommand of\n+\tlinkgit:git-remote[1], and ignored by the prefetch task\n+\tof `git maitenance`.\n \n remote.<name>.receivepack::\n \tThe default program to execute on the remote side when pushing.  See\ndiff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt\nindex e22b217fba..80838fe37e 100644\n--- a/Documentation/fetch-options.txt\n+++ b/Documentation/fetch-options.txt\n@@ -1,6 +1,7 @@\n --[no-]all::\n-\tFetch all remotes. This overrides the configuration variable\n-\t`fetch.all`.\n+\tFetch all remotes, except for the ones that has the\n+\t`remote.<name>.skipFetchAll` configuration variable set.\n+\tThis overrides the configuration variable fetch.all`.\n \n -a::\n --append::\ndiff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt\nindex 51d0f7e94b..9d96819133 100644\n--- a/Documentation/git-maintenance.txt\n+++ b/Documentation/git-maintenance.txt\n@@ -107,6 +107,9 @@ with the prefetch task, the objects necessary to complete a later real fetch\n would already be obtained, making the real fetch faster.  In the ideal case,\n it will just become an update to a bunch of remote-tracking branches without\n any object transfer.\n++\n+The `remote.<name>.skipFetchAll` configuration can be used to\n+exclude a particular remote from getting prefetched.\n \n gc::\n \tClean up unnecessary files and optimize the local repository. \"GC\"\n\nInterdiff:\n  diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt\n  index e22b217fba..80838fe37e 100644\n  --- a/Documentation/fetch-options.txt\n  +++ b/Documentation/fetch-options.txt\n  @@ -1,6 +1,7 @@\n   --[no-]all::\n  -\tFetch all remotes. This overrides the configuration variable\n  -\t`fetch.all`.\n  +\tFetch all remotes, except for the ones that has the\n  +\t`remote.<name>.skipFetchAll` configuration variable set.\n  +\tThis overrides the configuration variable fetch.all`.\n   \n   -a::\n   --append::\n-- \n2.46.0-694-g7ca3d1f4f8\n\n"},{"id":"502554","messageId":"490bd831-836a-4d7e-9695-8cb50c83317d@gmail.com","threadId":"62077","inReplyTo":"xmqqseu8u8m0.fsf@gitster.g","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Phillip Wood","fromEmail":"phillip.wood123@gmail.com","sentAt":"2024-09-10T08:42:10Z","receivedAt":"2024-09-10T08:42:16Z","isPatch":false,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"On 09/09/2024 16:53, Junio C Hamano wrote:\n> Phillip Wood <phillip.wood123@gmail.com> writes:\n> \n>>> The only place `skipFetchAll` is currently documented is in this large\n>>> master list of configs that are easy to miss —\n>>> https://git-scm.com/docs/git-config.\n>>\n>> We could perhaps expand the documentation of `git fetch --all` to\n>> mention skipFetchAll\n> \n> Like this (interdiff at the end)?\n\nThat looks good to me\n\nBest Wishes\n\nPhillip\n\n> --- >8 ---\n> Subject: [PATCH v2] doc: remote.*.skip{DefaultUpdate,FetchAll} stops prefetch\n> \n> Back when 7cc91a2f (Add the configuration option skipFetchAll,\n> 2009-11-09) added for the sole purpose of adding skipFetchAll as a\n> synonym to skipDefaultUpdate, there was no explanation about the\n> reason why it was needed., but these two configuration variables\n> mean exactly the same thing.\n> \n> Also, when we taught the \"prefetch\" task to \"git maintenance\" later,\n> we did make it pay attention to the setting, but we forgot to\n> document it.\n> \n> Document these variables as synonyms that collectively implements\n> the last-one-wins semantics, and also clarify that the prefetch task\n> is also controlled by this variable.\n> \n> Signed-off-by: Junio C Hamano <gitster@pobox.com>\n> ---\n>   Documentation/config/remote.txt   | 13 +++++++------\n>   Documentation/fetch-options.txt   |  5 +++--\n>   Documentation/git-maintenance.txt |  3 +++\n>   3 files changed, 13 insertions(+), 8 deletions(-)\n> \n> diff --git a/Documentation/config/remote.txt b/Documentation/config/remote.txt\n> index 8efc53e836..36e771556c 100644\n> --- a/Documentation/config/remote.txt\n> +++ b/Documentation/config/remote.txt\n> @@ -42,14 +42,15 @@ remote.<name>.mirror::\n>   \tas if the `--mirror` option was given on the command line.\n>   \n>   remote.<name>.skipDefaultUpdate::\n> -\tIf true, this remote will be skipped by default when updating\n> -\tusing linkgit:git-fetch[1] or the `update` subcommand of\n> -\tlinkgit:git-remote[1].\n> +\tA deprecated synonym to `remote.<name>.skipFetchAll` (if\n> +\tboth are set in the configuration files with different\n> +\tvalues, the value of the last occurrence will be used).\n>   \n>   remote.<name>.skipFetchAll::\n> -\tIf true, this remote will be skipped by default when updating\n> -\tusing linkgit:git-fetch[1] or the `update` subcommand of\n> -\tlinkgit:git-remote[1].\n> +\tIf true, this remote will be skipped when updating\n> +\tusing linkgit:git-fetch[1], the `update` subcommand of\n> +\tlinkgit:git-remote[1], and ignored by the prefetch task\n> +\tof `git maitenance`.\n>   \n>   remote.<name>.receivepack::\n>   \tThe default program to execute on the remote side when pushing.  See\n> diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt\n> index e22b217fba..80838fe37e 100644\n> --- a/Documentation/fetch-options.txt\n> +++ b/Documentation/fetch-options.txt\n> @@ -1,6 +1,7 @@\n>   --[no-]all::\n> -\tFetch all remotes. This overrides the configuration variable\n> -\t`fetch.all`.\n> +\tFetch all remotes, except for the ones that has the\n> +\t`remote.<name>.skipFetchAll` configuration variable set.\n> +\tThis overrides the configuration variable fetch.all`.\n>   \n>   -a::\n>   --append::\n> diff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt\n> index 51d0f7e94b..9d96819133 100644\n> --- a/Documentation/git-maintenance.txt\n> +++ b/Documentation/git-maintenance.txt\n> @@ -107,6 +107,9 @@ with the prefetch task, the objects necessary to complete a later real fetch\n>   would already be obtained, making the real fetch faster.  In the ideal case,\n>   it will just become an update to a bunch of remote-tracking branches without\n>   any object transfer.\n> ++\n> +The `remote.<name>.skipFetchAll` configuration can be used to\n> +exclude a particular remote from getting prefetched.\n>   \n>   gc::\n>   \tClean up unnecessary files and optimize the local repository. \"GC\"\n> \n> Interdiff:\n>    diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt\n>    index e22b217fba..80838fe37e 100644\n>    --- a/Documentation/fetch-options.txt\n>    +++ b/Documentation/fetch-options.txt\n>    @@ -1,6 +1,7 @@\n>     --[no-]all::\n>    -\tFetch all remotes. This overrides the configuration variable\n>    -\t`fetch.all`.\n>    +\tFetch all remotes, except for the ones that has the\n>    +\t`remote.<name>.skipFetchAll` configuration variable set.\n>    +\tThis overrides the configuration variable fetch.all`.\n>     \n>     -a::\n>     --append::\n"},{"id":"502559","messageId":"xmqqo74vo9jx.fsf@gitster.g","threadId":"62077","inReplyTo":"490bd831-836a-4d7e-9695-8cb50c83317d@gmail.com","subject":"Re: Re*: What's cooking draft as of 2024-09-06 late night","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2024-09-10T14:41:38Z","receivedAt":"2024-09-10T14:41:46Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Phillip Wood <phillip.wood123@gmail.com> writes:\n\n> On 09/09/2024 16:53, Junio C Hamano wrote:\n>> Phillip Wood <phillip.wood123@gmail.com> writes:\n>> \n>>>> The only place `skipFetchAll` is currently documented is in this large\n>>>> master list of configs that are easy to miss —\n>>>> https://git-scm.com/docs/git-config.\n>>>\n>>> We could perhaps expand the documentation of `git fetch --all` to\n>>> mention skipFetchAll\n>> Like this (interdiff at the end)?\n>\n> That looks good to me\n\nThanks.\n"}]}