{"thread":{"id":"62871","subject":"Tags are no longer fetched when fetching specific commit","startedAt":"2025-01-30T03:49:24Z","lastAt":"2025-03-19T15:32:52Z","messageCount":61,"participants":["Igor Todorovski","Taylor Blau","Bence Ferdinandy","Junio C Hamano","Jeff King","Elijah Newren"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"511452","messageId":"71075837-D0AA-4F01-9F5D-CA10BFE93B63@ca.ibm.com","threadId":"62871","inReplyTo":null,"subject":"Tags are no longer fetched when fetching specific commit","fromName":"Igor Todorovski","fromEmail":"itodorov@ca.ibm.com","sentAt":"2025-01-30T03:49:20Z","receivedAt":"2025-01-30T03:49:24Z","isPatch":false,"sender":{"key":"itodorov@ca.ibm.com","avatar":null},"body":"Hi, we have noticed a change in behaviour with commit 3f763ddf28d28fe63963991513c8db4045eabadc.\n \nHere’s the steps to reproduce:\n \nmkdir git-test-dir\ncd git-test-dir\ngit init --bare\ngit remote add origin -- https://github.com/golang/go\ngit -c protocol.version=2 fetch -f --depth=1 origin 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc:refs/dummy\ngit -c log.showsignature=false log --no-decorate -n1 --format=\"format:%H %ct %D\" 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc --\n \n# Expected:\n# 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted, tag: go1.24rc1, refs/dummy\n \n# Tags are not fetch when using 2.48.1:\n# 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted\n \n---\n \ngit bisect revealed 3f763ddf28d28fe63963991513c8db4045eabadc as the culprit:\n \ncommit 3f763ddf28d28fe63963991513c8db4045eabadc\nAuthor: Bence Ferdinandy\nDate:   Fri Nov 22 13:28:50 2024 +0100\n \n    fetch: set remote/HEAD if it does not exist\n \n    When cloning a repository remote/HEAD is created, but when the user\n    creates a repository with git init, and later adds a remote, remote/HEAD\n    is only created if the user explicitly runs a variant of \"remote\n    set-head\". Attempt to set remote/HEAD during fetch, if the user does not\n    have it already set. Silently ignore any errors.\n \n    Signed-off-by: Bence Ferdinandy bence@ferdinandy.com\n    Signed-off-by: Junio C Hamano gitster@pobox.com\n \n \nIs this intended?\n \nThis was initially reported under https://github.com/zopencommunity/gitport/issues/146.\n\n"},{"id":"512389","messageId":"Z650WoqFwCSo6svH@nand.local","threadId":"62871","inReplyTo":"71075837-D0AA-4F01-9F5D-CA10BFE93B63@ca.ibm.com","subject":"Re: Tags are no longer fetched when fetching specific commit","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-02-13T22:38:18Z","receivedAt":"2025-02-13T22:38:21Z","isPatch":false,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Thu, Jan 30, 2025 at 03:49:20AM +0000, Igor Todorovski wrote:\n> Hi, we have noticed a change in behaviour with commit 3f763ddf28d28fe63963991513c8db4045eabadc.\n>\n> Here’s the steps to reproduce:\n>\n> mkdir git-test-dir\n> cd git-test-dir\n> git init --bare\n> git remote add origin -- https://github.com/golang/go\n> git -c protocol.version=2 fetch -f --depth=1 origin 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc:refs/dummy\n> git -c log.showsignature=false log --no-decorate -n1 --format=\"format:%H %ct %D\" 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc --\n>\n> # Expected:\n> # 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted, tag: go1.24rc1, refs/dummy\n>\n> # Tags are not fetch when using 2.48.1:\n> # 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted\n>\n> ---\n>\n> git bisect revealed 3f763ddf28d28fe63963991513c8db4045eabadc as the culprit:\n>\n> commit 3f763ddf28d28fe63963991513c8db4045eabadc\n> Author: Bence Ferdinandy\n> Date:   Fri Nov 22 13:28:50 2024 +0100\n>\n>     fetch: set remote/HEAD if it does not exist\n>\n>     When cloning a repository remote/HEAD is created, but when the user\n>     creates a repository with git init, and later adds a remote, remote/HEAD\n>     is only created if the user explicitly runs a variant of \"remote\n>     set-head\". Attempt to set remote/HEAD during fetch, if the user does not\n>     have it already set. Silently ignore any errors.\n>\n>     Signed-off-by: Bence Ferdinandy bence@ferdinandy.com\n>     Signed-off-by: Junio C Hamano gitster@pobox.com\n>\n\nThanks for the report and bisection recipe. I was able to bisect the\nsame issue myself, and also found myself at 3f763ddf28 (fetch: set\nremote/HEAD if it does not exist, 2024-11-22).\n\n> Is this intended?\n\nI don't think this was intentional, though the commit's author Bence\n(CC'd) can confirm.\n\nI suspect what's going on here is that in 3f763ddf28 and onwards we are\nexplicitly adding \"HEAD\" to the list of ref_prefixes, which causes the\nserver to respond only to the prefixes being asked for. In a\npre-3f763ddf28 world, the ref_prefixes list would be empty (if invoked\naccording to your script above), which allowed us to learn about any\ntags pointing at that commit.\n\nOne way to fix it is to move adding the \"HEAD\" prefix to above where we\ncheck\n\n    if (tags == TAGS_SET || tags == TAGS_DEFAULT)\n\n, which would allow us to enter the inner-most conditional which guards\nus actually adding the refs/tags prefix to our list.\n\nBut I don't love that solution, and I think even that is incomplete\nsince as of 6c915c3f85 (fetch: do not ask for HEAD unnecessarily,\n2024-12-06) we only ask for \"HEAD\" if we have a remote in the first\nplace.\n\nI think the real culprit is that we can no longer hold the same\nassumption from e70a3030e7 (fetch: do not list refs if fetching only\nhashes, 2018-09-27), which is that we can avoid asking for refs/tags as\nan explicit prefix if we're (a) fetching literal hashes, (b) tag\nfollowing wasn't requested, and (c) the fetch is done with protocol v2.\n\nSo I think the right fix would really be something like:\n\n--- 8< ---\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex fe2b26c74a..0e63621e6c 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1770,9 +1770,8 @@ static int do_fetch(struct transport *transport,\n\n \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n \t\tmust_list_refs = 1;\n-\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n-\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n-\t\t\t\t    \"refs/tags/\");\n+\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t    \"refs/tags/\");\n \t}\n\n \tif (uses_remote_tracking(transport, rs)) {\n--- >8 ---\n\nBut I'm unfamiliar enough with this area that I'd appreciate comments\nfrom the authors of these various commits, all of whom have been CC'd.\nDoes this seem right to you, or am I totally down the wrong path?\n\nThanks,\nTaylor\n"},{"id":"512426","messageId":"D7S7WIUIIO8O.27H4PIIL29B49@ferdinandy.com","threadId":"62871","inReplyTo":"Z650WoqFwCSo6svH@nand.local","subject":"Re: Tags are no longer fetched when fetching specific commit","fromName":"Bence Ferdinandy","fromEmail":"bence@ferdinandy.com","sentAt":"2025-02-14T13:53:54Z","receivedAt":"2025-02-14T14:00:07Z","isPatch":false,"sender":{"key":"bence@ferdinandy.com","avatar":"https://avatars.githubusercontent.com/u/6343487?v=4"},"body":"\nOn Thu Feb 13, 2025 at 23:38, Taylor Blau <me@ttaylorr.com> wrote:\n> On Thu, Jan 30, 2025 at 03:49:20AM +0000, Igor Todorovski wrote:\n>> Hi, we have noticed a change in behaviour with commit 3f763ddf28d28fe63963991513c8db4045eabadc.\n>>\n>> Here’s the steps to reproduce:\n>>\n>> mkdir git-test-dir\n>> cd git-test-dir\n>> git init --bare\n>> git remote add origin -- https://github.com/golang/go\n>> git -c protocol.version=2 fetch -f --depth=1 origin 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc:refs/dummy\n>> git -c log.showsignature=false log --no-decorate -n1 --format=\"format:%H %ct %D\" 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc --\n>>\n>> # Expected:\n>> # 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted, tag: go1.24rc1, refs/dummy\n>>\n>> # Tags are not fetch when using 2.48.1:\n>> # 16afa6a740fac7442e94dcd2ec5ea4a4853e45dc 1734108730 grafted\n>>\n>> ---\n>>\n>> git bisect revealed 3f763ddf28d28fe63963991513c8db4045eabadc as the culprit:\n>>\n>> commit 3f763ddf28d28fe63963991513c8db4045eabadc\n>> Author: Bence Ferdinandy\n>> Date:   Fri Nov 22 13:28:50 2024 +0100\n>>\n>>     fetch: set remote/HEAD if it does not exist\n>>\n>>     When cloning a repository remote/HEAD is created, but when the user\n>>     creates a repository with git init, and later adds a remote, remote/HEAD\n>>     is only created if the user explicitly runs a variant of \"remote\n>>     set-head\". Attempt to set remote/HEAD during fetch, if the user does not\n>>     have it already set. Silently ignore any errors.\n>>\n>>     Signed-off-by: Bence Ferdinandy bence@ferdinandy.com\n>>     Signed-off-by: Junio C Hamano gitster@pobox.com\n>>\n>\n> Thanks for the report and bisection recipe. I was able to bisect the\n> same issue myself, and also found myself at 3f763ddf28 (fetch: set\n> remote/HEAD if it does not exist, 2024-11-22).\n>\n>> Is this intended?\n>\n> I don't think this was intentional, though the commit's author Bence\n> (CC'd) can confirm.\n>\n> I suspect what's going on here is that in 3f763ddf28 and onwards we are\n> explicitly adding \"HEAD\" to the list of ref_prefixes, which causes the\n> server to respond only to the prefixes being asked for. In a\n> pre-3f763ddf28 world, the ref_prefixes list would be empty (if invoked\n> according to your script above), which allowed us to learn about any\n> tags pointing at that commit.\n>\n> One way to fix it is to move adding the \"HEAD\" prefix to above where we\n> check\n>\n>     if (tags == TAGS_SET || tags == TAGS_DEFAULT)\n>\n> , which would allow us to enter the inner-most conditional which guards\n> us actually adding the refs/tags prefix to our list.\n>\n> But I don't love that solution, and I think even that is incomplete\n> since as of 6c915c3f85 (fetch: do not ask for HEAD unnecessarily,\n> 2024-12-06) we only ask for \"HEAD\" if we have a remote in the first\n> place.\n>\n> I think the real culprit is that we can no longer hold the same\n> assumption from e70a3030e7 (fetch: do not list refs if fetching only\n> hashes, 2018-09-27), which is that we can avoid asking for refs/tags as\n> an explicit prefix if we're (a) fetching literal hashes, (b) tag\n> following wasn't requested, and (c) the fetch is done with protocol v2.\n>\n> So I think the right fix would really be something like:\n>\n> --- 8< ---\n> diff --git a/builtin/fetch.c b/builtin/fetch.c\n> index fe2b26c74a..0e63621e6c 100644\n> --- a/builtin/fetch.c\n> +++ b/builtin/fetch.c\n> @@ -1770,9 +1770,8 @@ static int do_fetch(struct transport *transport,\n>\n>  \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n>  \t\tmust_list_refs = 1;\n> -\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n> -\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> -\t\t\t\t    \"refs/tags/\");\n> +\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> +\t\t\t    \"refs/tags/\");\n>  \t}\n>\n>  \tif (uses_remote_tracking(transport, rs)) {\n> --- >8 ---\n>\n> But I'm unfamiliar enough with this area that I'd appreciate comments\n> from the authors of these various commits, all of whom have been CC'd.\n> Does this seem right to you, or am I totally down the wrong path?\n\nThis is the same error that came up already in another thread, and I came to\na similar conclusion as you did (also about asking previous authors, which is\nwhy it is a bit stuck I guess):\n\nhttps://lore.kernel.org/git/D7D031QT4HEX.14TRNKRC6FC7S@ferdinandy.com/\n\nI'll copy the relevant part of my previous message:\n\n\tWhat is not quite clear to me, is that it looks like that the original\n\tintention was to pretty much always fetch tags, yet it was not achieved by\n\talways pushing `refs/tags` into ref_prefixes. Deleting the check for\n\t`ref_prefixes` being empty [1] breaks quite a lot of things, but reversing the\n\torder [2] does not. That feels a bit strange tbh since it feels like the two\n\tshould bring about the same state ...\n\n\tHopefully someone more knowledgeable knows why things are as they are, but it\n\tseems that reversing the order really is a band-aid here.\n\n\t1: https://github.com/ferdinandyb/git/commit/6074a9b8c88451e589eade4034282dd9b6c86345\n\t2: https://github.com/ferdinandyb/git/commit/31e3f0a6b829d6c7953bf89d015b98e7edabe6b5\n\nSo there is some magic going on later on which I don't know enough about.\n\nBest,\nBence\n"},{"id":"512432","messageId":"xmqqv7tcl6hp.fsf@gitster.g","threadId":"62871","inReplyTo":"Z650WoqFwCSo6svH@nand.local","subject":"Re: Tags are no longer fetched when fetching specific commit","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-02-14T18:35:14Z","receivedAt":"2025-02-14T18:35:17Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Taylor Blau <me@ttaylorr.com> writes:\n\n> So I think the right fix would really be something like:\n>\n> --- 8< ---\n> diff --git a/builtin/fetch.c b/builtin/fetch.c\n> index fe2b26c74a..0e63621e6c 100644\n> --- a/builtin/fetch.c\n> +++ b/builtin/fetch.c\n> @@ -1770,9 +1770,8 @@ static int do_fetch(struct transport *transport,\n>\n>  \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n>  \t\tmust_list_refs = 1;\n> -\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n> -\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> -\t\t\t\t    \"refs/tags/\");\n\nI guess the original \"if we are giving prefixes already, then make\nsure we learn about tags\" is because the semantics of the ref-prefix\nis peculiar, in that without _any_, there is no limitation and the\nremote end would advertise all its refs, but if there is even one,\nthe remote end would advertise only the ones that match any prefix?\n\n> +\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> +\t\t\t    \"refs/tags/\");\n\nSo this change would make sure that, even if somebody else already\nadded a prefix earlier, we would always ask about tags if we come\ninto this block.  It also means when nobody has added a prefix\nbefore we reach here, we still add prefix to ask about tags.  The\nimplication of which may be rather grave.  If a later code relied\non us _not_ asking for tags here (because nobody is limiting the\nls-refs request with prefix), after this change, that code will\nnow see that there is some prefix requested already, and if we\nwanted to retain what that code does, we would need to adjust that\ncode (and then the need for similar modification cascades X-<).\n\n>  \t}\n>\n>  \tif (uses_remote_tracking(transport, rs)) {\n> --- >8 ---\n>\n> But I'm unfamiliar enough with this area that I'd appreciate comments\n> from the authors of these various commits, all of whom have been CC'd.\n> Does this seem right to you, or am I totally down the wrong path?\n\nI have no idea without doing a deep dive myself, for which I have\nfailed to find time for so far.\n\nI have to wonder if the first thing we should do is to update the\nlogic to decide what ref prefixes to use, so that it does not do\nsuch an incremental strvec_push().  There are multiple questions in\nthe form \"Do we need to know about X?\" the code path need to ask\nbefore deciding what prefixes to use, and before Bence's \"We need to\nknow about HEAD, because we want to know about its symref value\",\nrefs/tags hierarchy was one (and only?) thing we needed to ask\nabout.  The bug under discussion smells like the result of how\nbrittle the code's assumption about what prefixes other parts would\nwant to ask.  This code did not assume there is anybody else, and\nthat is why it broke when we started asking about HEAD.  Now we have\ntwo possible X's in that question (refs/tags and HEAD).  We may want\nto make sure the code is robust enough when we add the third one.\n\nThanks.\n\n"},{"id":"512790","messageId":"20250221072558.GA572877@coredump.intra.peff.net","threadId":"62871","inReplyTo":"xmqqv7tcl6hp.fsf@gitster.g","subject":"Re: Tags are no longer fetched when fetching specific commit","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-02-21T07:25:58Z","receivedAt":"2025-02-21T07:26:00Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Feb 14, 2025 at 10:35:14AM -0800, Junio C Hamano wrote:\n\n> Taylor Blau <me@ttaylorr.com> writes:\n> \n> > So I think the right fix would really be something like:\n> >\n> > --- 8< ---\n> > diff --git a/builtin/fetch.c b/builtin/fetch.c\n> > index fe2b26c74a..0e63621e6c 100644\n> > --- a/builtin/fetch.c\n> > +++ b/builtin/fetch.c\n> > @@ -1770,9 +1770,8 @@ static int do_fetch(struct transport *transport,\n> >\n> >  \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n> >  \t\tmust_list_refs = 1;\n> > -\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n> > -\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> > -\t\t\t\t    \"refs/tags/\");\n> \n> I guess the original \"if we are giving prefixes already, then make\n> sure we learn about tags\" is because the semantics of the ref-prefix\n> is peculiar, in that without _any_, there is no limitation and the\n> remote end would advertise all its refs, but if there is even one,\n> the remote end would advertise only the ones that match any prefix?\n\nYes, I think that is accurate. We must either add prefixes for all bits\nof code interested in seeing the remote refs, or we must add none at\nall.\n\nAnd so just removing the conditional like this:\n\n> > +\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> > +\t\t\t    \"refs/tags/\");\n> \n> So this change would make sure that, even if somebody else already\n> added a prefix earlier, we would always ask about tags if we come\n> into this block.  It also means when nobody has added a prefix\n> before we reach here, we still add prefix to ask about tags.  The\n> implication of which may be rather grave.  If a later code relied\n> on us _not_ asking for tags here (because nobody is limiting the\n> ls-refs request with prefix), after this change, that code will\n> now see that there is some prefix requested already, and if we\n> wanted to retain what that code does, we would need to adjust that\n> code (and then the need for similar modification cascades X-<).\n\nis not going to work. I _think_ for the reasons you're implying above,\nbut your mention of \"if later code relied on us...\" confused me.\n\nIt is really the _earlier_ code that we are screwing up here. If the\nearlier block which conditionally added to ref_prefixes did not add\nanything, then unconditionally adding \"refs/tags/\" means that the refs\nthat earlier code expected to find in the advertisement may not be\npresent.\n\nOf course it is the later code which actually starts the fetch and looks\nat the advertisement that will bear the effects of the missing refs. So\nmaybe that is what you meant by \"later code\". ;)\n\n> I have to wonder if the first thing we should do is to update the\n> logic to decide what ref prefixes to use, so that it does not do\n> such an incremental strvec_push().  There are multiple questions in\n> the form \"Do we need to know about X?\" the code path need to ask\n> before deciding what prefixes to use, and before Bence's \"We need to\n> know about HEAD, because we want to know about its symref value\",\n> refs/tags hierarchy was one (and only?) thing we needed to ask\n> about.  The bug under discussion smells like the result of how\n> brittle the code's assumption about what prefixes other parts would\n> want to ask.  This code did not assume there is anybody else, and\n> that is why it broke when we started asking about HEAD.  Now we have\n> two possible X's in that question (refs/tags and HEAD).  We may want\n> to make sure the code is robust enough when we add the third one.\n\nThere are three spots, really: the refs we are fetching, the tags for\nfollowing, and now HEAD.\n\nBut they are not all equal. The decision of \"can we limit the ref\nadvertisement at all\" comes from the first one, the set of refs we are\nfetching[1]. And then the other ancillary data must follow that lead\n(either adding bits they are interested in, or not touching it at all if\nwe are going to see the whole advertisement).\n\nSo I think the bug is in adding the HEAD prefix: it should only happen\nif we are otherwise limiting the advertisement. I.e., this should fix\nthe problem in this thread:\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 1c740d5aac..c80afc6477 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1777,7 +1777,8 @@ static int do_fetch(struct transport *transport,\n \n \tif (uses_remote_tracking(transport, rs)) {\n \t\tmust_list_refs = 1;\n-\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes, \"HEAD\");\n+\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n+\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes, \"HEAD\");\n \t}\n \n \tif (must_list_refs) {\n\nas well as other possible ones (where asking for HEAD caused us to\nsuppress the advertisement for the refs we actually wanted to fetch;\nthough see my footnote below).\n\nI do agree this dependency is subtle. I'm not sure how to make it less\nawkward in the code, though. It's really a property of the protocol, and\nnot the code itself. So this:\n\n> about.  The bug under discussion smells like the result of how\n> brittle the code's assumption about what prefixes other parts would\n> want to ask.  This code did not assume there is anybody else, and\n> that is why it broke when we started asking about HEAD.  Now we have\n> two possible X's in that question (refs/tags and HEAD).  We may want\n> to make sure the code is robust enough when we add the third one.\n\nis always going to have that brittle-ness. You can't just have every\nspot register \"I am interested in this prefix\", because the _lack_ of\nregistering means something, too.\n\nBut it's less bad than one might think, because the primary decision\nabout whether to use prefixes at all happens first, and all three spots\nare contained in a single function. We could perhaps add a boolean\n\"restrict_ref_prefixes\" flag to make it a bit more obvious. But the code\nwould still look like:\n\n  if (...some complicated logic...) {\n\trestrict_ref_prefixes = 1;\n\tstrvec_push(&ref_prefixes, ...);\n  }\n\n  if (...we want tags...) {\n\tif (restrict_ref_prefixes)\n\t\tstrvec_push(&ref_prefixes, \"refs/tags/\");\n  }\n\n  if (...we want HEAD...) {\n\tif (restrict_ref_prefixes)\n\t\tstrvec_push(&ref_prefixes, \"HEAD\");\n  }\n\nThat is perhaps a little more self-documenting, but it introduces a new\npossible bug: that flag must be set if-and-only-if ref_prefixes is\nnon-empty. In the pseudo-code above that is not too bad, but in the real\ncode there are actually three branching paths which handle it. So it's\ndo-able, but I kind of wonder if a big comment explaining the situation\nwould make more sense.\n\n-Peff\n\n[1] One thing that I didn't dig into is why we would ever not pass ref\n    prefixes at all. Skimming the code, I think we reach that state if\n    we don't have any configure or command-line refspecs, and no\n    branch-merge config. So something like:\n\n      git init\n      git fetch /path/to/some-repo.git\n\n    But in that case I think we're just fetching HEAD into FETCH_HEAD?\n    In which case we probably ought to just ask for HEAD, I'd think, to\n    avoid pointless extra advertisement. And that's why the \"other\n    possible problems\" I mentioned earlier might not exist. If we only\n    hit the no-prefixes state when we're just fetching HEAD, then\n    accidentally adding \"HEAD\" to the prefix list and limiting ourselves\n    happens to do the right thing. ;)\n\n    A patch like this:\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 1c740d5aac..3364546d2a 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1766,13 +1766,19 @@ static int do_fetch(struct transport *transport,\n \t\t\t\t\t    branch->merge[i]->src);\n \t\t\t}\n \t\t}\n+\t\t/*\n+\t\t * If there are no refs specified to fetch, then we just\n+\t\t * fetch HEAD; mention that to narrow the advertisement.\n+\t\t */\n+\t\tif (!transport_ls_refs_options.ref_prefixes.nr)\n+\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t\t    \"HEAD\");\n \t}\n \n \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n \t\tmust_list_refs = 1;\n-\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n-\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n-\t\t\t\t    \"refs/tags/\");\n+\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t    \"refs/tags/\");\n \t}\n \n \tif (uses_remote_tracking(transport, rs)) {\n\n  does that limiting in a more explicit way, reducing the advertisement\n  for this kind of HEAD-only fetch. And as a bonus, it means that we'll\n  _always_ have the correct prefixes set, so further code for tags or\n  HEAD can unconditionally append to the prefix list.\n\n  It fixes the case that started this thread, and passes all the tests.\n\n  But I'm not 100% sure that this is thinking through all of the cases.\n  In particular, the one in this thread is fetching a raw sha1, which is\n  why there's no refspec (and thus no ref prefix set). In that case\n  asking for HEAD is actually pointless (assuming we don't care about\n  tag following or setting a configured $remote/HEAD, we would not need\n  any ref advertisement at all!). Asking for HEAD is not too bad an\n  outcome, but I think the \"right\" answer is really to suppress the\n  advertisement totally. There's not protocol support for that, though,\n  so asking for HEAD as a default is maybe a not-too-bad workaround?\n\n-Peff\n"},{"id":"513807","messageId":"61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"71075837-D0AA-4F01-9F5D-CA10BFE93B63@ca.ibm.com","subject":"[PATCH] fetch: fix following tags when fetching specific OID","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-07T23:27:03Z","receivedAt":"2025-03-07T23:27:11Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"In 3f763ddf28 (fetch: set remote/HEAD if it does not exist, 2024-11-22),\nunconditionally adds \"HEAD\" to the list of ref prefixes we send to the\nserver.\n\nThis breaks a core assumption that the list of prefixes we send to the\nserver is complete. We must either send all prefixes we care about, or\nnone at all (in the latter case the server then advertises everything).\n\nThe tag following code is careful to only add \"refs/tags/\" to the list\nof prefixes if there are already entries in the prefix list. But because\nthe new code from 3f763ddf28 runs after the tag code, and because it\nunconditionally adds to the prefix list, we may end up with a prefix\nlist that _should_ have \"refs/tags/\" in it, but doesn't.\n\nWhen that is the case, the server does not advertise any tags, and our\nauto-following breaks because we never learned about any tags in the\nfirst place.\n\nFix this by only adding \"HEAD\" to the ref prefixes when we know that we\nare already limiting the advertisement. In either case we'll learn about\nHEAD (either through the limited advertisement, or implicitly through a\nfull advertisement).\n\nReported-by: Igor Todorovski <itodorov@ca.ibm.com>\nCo-authored-by: Jeff King <peff@peff.net>\nSigned-off-by: Jeff King <peff@peff.net>\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\nPeff and I talked about this today, and neither of us could find any\nreasons not to pursue the approach listed in the footnote of\n\n  <20250221072558.GA572877@coredump.intra.peff.net>\n\n, but this is a more conservative approach that should fix the issue and\napply cleanly on top of 'maint'. It may be worth picking this into 2.49,\neven though we are already quite late into the -rc cycle, this is a\nfairly nasty bug.\n\n builtin/fetch.c      |  4 +++-\n t/t5503-tagfollow.sh | 15 +++++++++++++++\n 2 files changed, 18 insertions(+), 1 deletion(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex fe2b26c74ae..a06d1305016 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1777,7 +1777,9 @@ static int do_fetch(struct transport *transport,\n\n \tif (uses_remote_tracking(transport, rs)) {\n \t\tmust_list_refs = 1;\n-\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes, \"HEAD\");\n+\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n+\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t\t    \"HEAD\");\n \t}\n\n \tif (must_list_refs) {\ndiff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh\nindex 195fc64dd44..8495730e264 100755\n--- a/t/t5503-tagfollow.sh\n+++ b/t/t5503-tagfollow.sh\n@@ -160,4 +160,19 @@ test_expect_success 'new clone fetch main and tags' '\n \ttest_cmp expect actual\n '\n\n+test_expect_success 'fetch specific OID with tag following' '\n+\trm -f $U &&\n+\tgit init --bare clone3.git &&\n+\t(\n+\t\tcd clone3.git &&\n+\t\tgit remote add origin .. &&\n+\t\tgit fetch origin $B:refs/heads/main &&\n+\n+\t\tgit -C .. for-each-ref >expect &&\n+\t\tgit for-each-ref >actual &&\n+\n+\t\ttest_cmp expect actual\n+\t)\n+'\n+\n test_done\n\nbase-commit: f93ff170b93a1782659637824b25923245ac9dd1\n--\n2.48.1.1.g965d2fe18fa\n"},{"id":"513809","messageId":"Z8uCDAaVX80d/Z1H@nand.local","threadId":"62871","inReplyTo":"61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com","subject":"Re: [PATCH] fetch: fix following tags when fetching specific OID","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-07T23:32:28Z","receivedAt":"2025-03-07T23:32:30Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Fri, Mar 07, 2025 at 06:27:03PM -0500, Taylor Blau wrote:\n> diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh\n> index 195fc64dd44..8495730e264 100755\n> --- a/t/t5503-tagfollow.sh\n> +++ b/t/t5503-tagfollow.sh\n> @@ -160,4 +160,19 @@ test_expect_success 'new clone fetch main and tags' '\n>  \ttest_cmp expect actual\n>  '\n>\n> +test_expect_success 'fetch specific OID with tag following' '\n> +\trm -f $U &&\n\nOops. This line is stray from when I wrote the test with a more\nconservative approach that matches the above. It's harmless, but could\nequally be removed while queueing.\n\nSorry for not catching earlier.\n\nThanks,\nTaylor\n"},{"id":"513823","messageId":"xmqqsenobcx1.fsf@gitster.g","threadId":"62871","inReplyTo":"61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com","subject":"Re: [PATCH] fetch: fix following tags when fetching specific OID","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-08T00:10:02Z","receivedAt":"2025-03-08T00:10:06Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Taylor Blau <me@ttaylorr.com> writes:\n\n> Fix this by only adding \"HEAD\" to the ref prefixes when we know that we\n> are already limiting the advertisement. In either case we'll learn about\n> HEAD (either through the limited advertisement, or implicitly through a\n> full advertisement).\n\nGood.  \"implicitly through a full advertisement\" is a good thing to\nexplicitly state here ;-)\n\n> Reported-by: Igor Todorovski <itodorov@ca.ibm.com>\n> Co-authored-by: Jeff King <peff@peff.net>\n> Signed-off-by: Jeff King <peff@peff.net>\n> Signed-off-by: Taylor Blau <me@ttaylorr.com>\n> ---\n> Peff and I talked about this today, and neither of us could find any\n> reasons not to pursue the approach listed in the footnote of\n>\n>   <20250221072558.GA572877@coredump.intra.peff.net>\n>\n> , but this is a more conservative approach that should fix the issue and\n> apply cleanly on top of 'maint'. It may be worth picking this into 2.49,\n> even though we are already quite late into the -rc cycle, this is a\n> fairly nasty bug.\n\nThanks, both.\n"},{"id":"513827","messageId":"6d77cffc-94a3-42ca-938d-791256b508fd@ferdinandy.com","threadId":"62871","inReplyTo":"61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com","subject":"Re: [PATCH] fetch: fix following tags when fetching specific OID","fromName":"Bence Ferdinandy","fromEmail":"bence@ferdinandy.com","sentAt":"2025-03-08T03:23:00Z","receivedAt":"2025-03-08T03:29:25Z","isPatch":true,"sender":{"key":"bence@ferdinandy.com","avatar":"https://avatars.githubusercontent.com/u/6343487?v=4"},"body":"2025. márc. 8. 0:27:43 Taylor Blau <me@ttaylorr.com>:\n\n> In 3f763ddf28 (fetch: set remote/HEAD if it does not exist, \n> 2024-11-22),\n> unconditionally adds \"HEAD\" to the list of ref prefixes we send to the\n> server.\n>\n> This breaks a core assumption that the list of prefixes we send to the\n> server is complete. We must either send all prefixes we care about, or\n> none at all (in the latter case the server then advertises everything).\n>\n> The tag following code is careful to only add \"refs/tags/\" to the list\n> of prefixes if there are already entries in the prefix list. But \n> because\n> the new code from 3f763ddf28 runs after the tag code, and because it\n> unconditionally adds to the prefix list, we may end up with a prefix\n> list that _should_ have \"refs/tags/\" in it, but doesn't.\n>\n> When that is the case, the server does not advertise any tags, and our\n> auto-following breaks because we never learned about any tags in the\n> first place.\n>\n> Fix this by only adding \"HEAD\" to the ref prefixes when we know that we\n> are already limiting the advertisement. In either case we'll learn \n> about\n> HEAD (either through the limited advertisement, or implicitly through a\n> full advertisement).\n>\n> Reported-by: Igor Todorovski <itodorov@ca.ibm.com>\n> Co-authored-by: Jeff King <peff@peff.net>\n> Signed-off-by: Jeff King <peff@peff.net>\n> Signed-off-by: Taylor Blau <me@ttaylorr.com>\n> ---\n> Peff and I talked about this today, and neither of us could find any\n> reasons not to pursue the approach listed in the footnote of\n>\n>   <20250221072558.GA572877@coredump.intra.peff.net>\n>\n> , but this is a more conservative approach that should fix the issue \n> and\n> apply cleanly on top of 'maint'. It may be worth picking this into \n> 2.49,\n> even though we are already quite late into the -rc cycle, this is a\n> fairly nasty bug.\n>\n> builtin/fetch.c      |  4 +++-\n> t/t5503-tagfollow.sh | 15 +++++++++++++++\n> 2 files changed, 18 insertions(+), 1 deletion(-)\n>\n> diff --git a/builtin/fetch.c b/builtin/fetch.c\n> index fe2b26c74ae..a06d1305016 100644\n> --- a/builtin/fetch.c\n> +++ b/builtin/fetch.c\n> @@ -1777,7 +1777,9 @@ static int do_fetch(struct transport *transport,\n>\n>     if (uses_remote_tracking(transport, rs)) {\n>         must_list_refs = 1;\n> -       strvec_push(&transport_ls_refs_options.ref_prefixes, \"HEAD\");\n> +       if (transport_ls_refs_options.ref_prefixes.nr)\n> +           strvec_push(&transport_ls_refs_options.ref_prefixes,\n> +                   \"HEAD\");\n>     }\n>\n>     if (must_list_refs) {\n> diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh\n> index 195fc64dd44..8495730e264 100755\n> --- a/t/t5503-tagfollow.sh\n> +++ b/t/t5503-tagfollow.sh\n> @@ -160,4 +160,19 @@ test_expect_success 'new clone fetch main and \n> tags' '\n>     test_cmp expect actual\n> '\n>\n> +test_expect_success 'fetch specific OID with tag following' '\n> +   rm -f $U &&\n> +   git init --bare clone3.git &&\n> +   (\n> +       cd clone3.git &&\n> +       git remote add origin .. &&\n> +       git fetch origin $B:refs/heads/main &&\n> +\n> +       git -C .. for-each-ref >expect &&\n> +       git for-each-ref >actual &&\n> +\n> +       test_cmp expect actual\n> +   )\n> +'\n> +\n> test_done\n>\n> base-commit: f93ff170b93a1782659637824b25923245ac9dd1\n> --\n> 2.48.1.1.g965d2fe18fa\n\nThanks for cleaning up my mess!\n"},{"id":"513835","messageId":"20250309030101.GA2334064@coredump.intra.peff.net","threadId":"62871","inReplyTo":"61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com","subject":"[PATCH 0/9] fetch: further ref-prefix cleanups and optimizations","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:01:01Z","receivedAt":"2025-03-09T03:01:10Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Mar 07, 2025 at 06:27:03PM -0500, Taylor Blau wrote:\n\n> Peff and I talked about this today, and neither of us could find any\n> reasons not to pursue the approach listed in the footnote of\n> \n>   <20250221072558.GA572877@coredump.intra.peff.net>\n> \n> , but this is a more conservative approach that should fix the issue and\n> apply cleanly on top of 'maint'. It may be worth picking this into 2.49,\n> even though we are already quite late into the -rc cycle, this is a\n> fairly nasty bug.\n\nYeah, I favor doing this simple fix first, and then trying the larger\n(and slightly riskier) change on top.\n\nI started to write up that larger patch, and found a number of\ninteresting things. ;) So here's a 9-patch series, which would apply on\ntop of tb/fetch-follow-tags-fix (but can very much wait to cook in the\nnext development cycle).\n\n  [1/9]: t5702: fix typo in test name\n  [2/9]: t5516: prefer \"oid\" to \"sha1\" in some test titles\n  [3/9]: t5516: drop NEEDSWORK about v2 reachability behavior\n\n    Just some cosmetic fixes in nearby areas.\n\n  [4/9]: t5516: beef up exact-oid ref prefixes test\n\n    Improving test coverage in an area I'm about to touch.\n\n  [5/9]: refspec_ref_prefixes(): clean up refspec_item logic\n\n    Code clean-up. Not necessary (textually or semantically) for the\n    other patches.\n\n  [6/9]: fetch: ask server to advertise HEAD for config-less fetch\n  [7/9]: fetch: stop protecting additions to ref-prefix list\n  [8/9]: fetch: avoid ls-refs only to ask for HEAD symref update\n\n    Here we get to the interesting bits. These get rid of the subtle\n    dependency that led to this bug in the first place, and also\n    optimize a few cases where we can narrow the ref advertisement.\n\n    The third one is a bit optimization, where we avoid a whole\n    round-trip to the server. It's correct as far as the rest of the\n    code behaves, but I'm not 100% sure that the new origin/HEAD update\n    feature isn't a little buggy. See my comments there.\n\n  [9/9]: fetch: use ref prefix list to skip ls-refs\n\n    And then this is just a final bit of cleanup enabled by the earlier\n    patches.\n\n builtin/fetch.c        | 46 +++++++++++++++++-------------------------\n refspec.c              | 22 ++++++++++++++------\n t/t5516-fetch-push.sh  | 12 ++++++-----\n t/t5702-protocol-v2.sh | 44 +++++++++++++++++++++++++++++++++++++++-\n 4 files changed, 85 insertions(+), 39 deletions(-)\n\n-Peff\n"},{"id":"513836","messageId":"20250309030123.GA2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 1/9] t5702: fix typo in test name","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:01:23Z","receivedAt":"2025-03-09T03:01:25Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"Signed-off-by: Jeff King <peff@peff.net>\n---\n t/t5702-protocol-v2.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\nindex d3df81e785..cea8f92a3d 100755\n--- a/t/t5702-protocol-v2.sh\n+++ b/t/t5702-protocol-v2.sh\n@@ -665,7 +665,7 @@ test_expect_success 'even with handcrafted request, filter does not work if not\n \ttest-tool -C server serve-v2 --stateless-rpc <in >/dev/null\n '\n \n-test_expect_success 'default refspec is used to filter ref when fetchcing' '\n+test_expect_success 'default refspec is used to filter ref when fetching' '\n \ttest_when_finished \"rm -f log\" &&\n \n \tGIT_TRACE_PACKET=\"$(pwd)/log\" git -C file_child -c protocol.version=2 \\\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513837","messageId":"20250309030140.GB2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 2/9] t5516: prefer \"oid\" to \"sha1\" in some test titles","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:01:40Z","receivedAt":"2025-03-09T03:01:42Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"These old tests refer to object ids as \"sha1\". These days we prefer\nthe more algorithm-agnostic \"oid\".\n\nThere are a few more tests that mention sha1 in the title and also use\nit in variables throughout the test. I've left them for now, as changing\nthem is more involved (and they're linked to the allowTipSHA1InWant\nconfig, which as a v0-only thing actually is always sha1).\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n t/t5516-fetch-push.sh | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh\nindex 85ed049627..e7629fc536 100755\n--- a/t/t5516-fetch-push.sh\n+++ b/t/t5516-fetch-push.sh\n@@ -495,7 +495,7 @@ test_expect_success 'push tag with non-existent, incomplete dest' '\n \n '\n \n-test_expect_success 'push sha1 with non-existent, incomplete dest' '\n+test_expect_success 'push oid with non-existent, incomplete dest' '\n \n \tmk_test testrepo &&\n \ttest_must_fail git push testrepo $(git rev-parse main):foo\n@@ -1251,7 +1251,7 @@ do\n \t'\n done\n \n-test_expect_success 'fetch exact SHA1' '\n+test_expect_success 'fetch exact oid' '\n \tmk_test testrepo heads/main hidden/one &&\n \tgit push testrepo main:refs/hidden/one &&\n \t(\n@@ -1297,7 +1297,7 @@ test_expect_success 'fetch exact SHA1' '\n \t)\n '\n \n-test_expect_success 'fetch exact SHA1 in protocol v2' '\n+test_expect_success 'fetch exact oid in protocol v2' '\n \tmk_test testrepo heads/main hidden/one &&\n \tgit push testrepo main:refs/hidden/one &&\n \tgit -C testrepo config transfer.hiderefs refs/hidden &&\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513838","messageId":"20250309030203.GC2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 3/9] t5516: drop NEEDSWORK about v2 reachability behavior","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:02:03Z","receivedAt":"2025-03-09T03:02:05Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"When this test was added in 6c301adb0a (fetch: do not pass ref-prefixes\nfor fetch by exact SHA1, 2018-05-31), there was still some uncertainty\nabout the v2 protocol's looser behavior with serving objects that are\nnot directly pointed at by a ref.\n\nAt this point that behavior is well established, and I do not think we\nwould ever change v2 to match the v0 behavior (and if we did,\nremembering to update this test is the least of our concerns).\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n t/t5516-fetch-push.sh | 1 -\n 1 file changed, 1 deletion(-)\n\ndiff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh\nindex e7629fc536..e4008f3ca6 100755\n--- a/t/t5516-fetch-push.sh\n+++ b/t/t5516-fetch-push.sh\n@@ -1312,7 +1312,6 @@ test_expect_success 'fetch exact oid in protocol v2' '\n \ttest_must_fail git -C child cat-file -t $the_commit &&\n \n \t# fetching the hidden object succeeds by default\n-\t# NEEDSWORK: should this match the v0 behavior instead?\n \tgit -C child fetch -v ../testrepo $the_commit:refs/heads/copy\n '\n \n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513839","messageId":"20250309030247.GD2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 4/9] t5516: beef up exact-oid ref prefixes test","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:02:47Z","receivedAt":"2025-03-09T03:02:48Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"Commit 6c301adb0a (fetch: do not pass ref-prefixes for fetch by exact\nSHA1, 2018-05-31) added a test that fetching an exact oid with the v2\nprotocol works. Originally it failed without the code change from that\ncommit, because fetch failed with \"no matching remote head\".\n\nThat changed in 0177565148 (transport: do not list refs if possible,\n2018-09-27), which made fetch more forgiving of this case.\n\nBut that now meant the test passes even without its fix! So let's also\nhave it check the packet listing to make sure we did not ask for the\nbogus prefix (ultimately this is less important than whether the command\nfails, since it's just an optimization, but we should make sure not to\nregress it).\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n t/t5516-fetch-push.sh | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)\n\ndiff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh\nindex e4008f3ca6..2904399e97 100755\n--- a/t/t5516-fetch-push.sh\n+++ b/t/t5516-fetch-push.sh\n@@ -1312,7 +1312,10 @@ test_expect_success 'fetch exact oid in protocol v2' '\n \ttest_must_fail git -C child cat-file -t $the_commit &&\n \n \t# fetching the hidden object succeeds by default\n-\tgit -C child fetch -v ../testrepo $the_commit:refs/heads/copy\n+\tGIT_TRACE_PACKET=$PWD/trace.out \\\n+\tgit -C child fetch -v ../testrepo $the_commit:refs/heads/copy &&\n+\n+\ttest_grep ! \"ref-prefix.*$the_commit\" trace.out\n '\n \n for configallowtipsha1inwant in true false\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513840","messageId":"20250309030706.GE2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:07:06Z","receivedAt":"2025-03-09T03:07:07Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"The point of refspec_ref_prefixes() is to look over the set of refspecs\nand set up an appropriate list of \"ref-prefix\" strings to send to the\nserver.\n\nThe logic for handling individual refspec_items has some confusing bits.\nThe final part of our if/else cascade checks this:\n\n  else if (item->src && !item->exact_sha1)\n\tprefix = item->src;\n\nBut we know that \"item->exact_sha1\" can never be true, because earlier\nwe did:\n\n  if (item->exact_sha1 || item->negative)\n\tcontinue;\n\nThis is due to 6c301adb0a (fetch: do not pass ref-prefixes for fetch by\nexact SHA1, 2018-05-31), which added the continue. So it is tempting to\nremove the extra exact_sha1 at the end of the cascade, leaving the one\nat the top of the loop.\n\nBut I don't think that's quite right. The full cascade is:\n\n  if (rs->fetch == REFSPEC_FETCH)\n\tprefix = item->src;\n  else if (item->dst)\n\tprefix = item->dst;\n  else if (item->src && !item->exact_sha1)\n\tprefix = item->src;\n\nwhich all comes from 6373cb598e (refspec: consolidate ref-prefix\ngeneration logic, 2018-05-16). That first \"if\" is supposed to handle\nfetches, where we care about the source name, since that is coming from\nthe server. And the rest should be for pushes, where we care about the\ndestination, since that's the name the server will use. And we get that\neither explicitly from \"dst\" (for something like \"foo:bar\") or\nimplicitly from the source (a refspec like \"foo\" is treated as\n\"foo:foo\").\n\nBut how should exact_sha1 interact with those? For a fetch, exact_sha1\nalways means we do not care about sending a name to the server (there is\nno server refname at all). But pushing an exact sha1 should still care\nabout the destination on the server! It is only if we have to fall back\nto the implicit source that we need to care if it is a real ref (though\narguably such a push does not even make sense; where would the server\nstore it?).\n\nSo I think that 6c301adb0a \"broke\" the push case by always skipping\nexact_sha1 items, even though a push should only care about the\ndestination.\n\nOf course this is all completely academic. We have still not implemented\na v2 push protocol, so even though we do call this function for pushes,\nwe'd never actually send these ref-prefix lines.\n\nHowever, given the effort I spent to figure out what was going on here,\nand the overlapping exact_sha1 checks, I'd like to rewrite this to\npreemptively fix the bug, and hopefully make it less confusing.\n\nThis splits the \"if\" at the top-level into fetch vs push, and then each\nhandles exact_sha1 appropriately itself. The check for negative refspecs\nremains outside of either (there is no protocol support for them, so we\nnever send them to the server, but rather use them only to reduce the\nadvertisement we receive).\n\nThe resulting behavior should be identical for fetches, but hopefully\nsets us up better for a potential future v2 push.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\nThis could be dropped without affecting the rest of the series if it's\ntoo churn-y.\n\n refspec.c | 22 ++++++++++++++++------\n 1 file changed, 16 insertions(+), 6 deletions(-)\n\ndiff --git a/refspec.c b/refspec.c\nindex 4cb80b5208..c6ad515f04 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -246,14 +246,24 @@ void refspec_ref_prefixes(const struct refspec *rs,\n \t\tconst struct refspec_item *item = &rs->items[i];\n \t\tconst char *prefix = NULL;\n \n-\t\tif (item->exact_sha1 || item->negative)\n+\t\tif (item->negative)\n \t\t\tcontinue;\n-\t\tif (rs->fetch == REFSPEC_FETCH)\n-\t\t\tprefix = item->src;\n-\t\telse if (item->dst)\n-\t\t\tprefix = item->dst;\n-\t\telse if (item->src && !item->exact_sha1)\n+\n+\t\tif (rs->fetch == REFSPEC_FETCH) {\n+\t\t\tif (item->exact_sha1)\n+\t\t\t\tcontinue;\n \t\t\tprefix = item->src;\n+\t\t} else {\n+\t\t\t/*\n+\t\t\t * Pushes can have an explicit destination like\n+\t\t\t * \"foo:bar\", or can implicitly use the src for both\n+\t\t\t * (\"foo\" is the same as \"foo:foo\").\n+\t\t\t */\n+\t\t\tif (item->dst)\n+\t\t\t\tprefix = item->dst;\n+\t\t\telse if (item->src && !item->exact_sha1)\n+\t\t\t\tprefix = item->src;\n+\t\t}\n \n \t\tif (!prefix)\n \t\t\tcontinue;\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513841","messageId":"20250309030847.GF2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 6/9] fetch: ask server to advertise HEAD for config-less fetch","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:08:47Z","receivedAt":"2025-03-09T03:08:48Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"If we're not given any refspecs (either on the command line or via\nconfig) and we have no branch merge config, then we fetch the remote\nHEAD into our local FETCH_HEAD. In that case we do not send any\nref-prefix option to the server at all, and we see the full\nadvertisement.\n\nBut this is sub-optimal. We only care about HEAD, so we can just ask\nfor that, and ignore all of the other refs.\n\nThe new test demonstrates a case where we see fewer refs (in this case\nonly one less, but in theory we could be ignoring millions of them).\n\nThis also removes the only case where we care about seeing some refs\nfrom the other side, but don't add anything to the ref_prefixes list.\nCleaning this up means one less maintenance burden. Before this patch,\nany code which wanted to add to the list had to make sure the list was\nnot empty, since an empty list meant \"ask for everything\". Now it really\nmeans \"we are not interested in any refs\".\n\nThis should let us optimize a few more cases in subsequent patches.\n\nNote that we'll add \"HEAD\" to the list of prefixes, and later code for\nupdating \"refs/remotes/<remote>/HEAD\" may likewise do so. In theory this\ncould cause duplicates in the list, but in practice these can't both\ntrigger. We hit our new case only if there are no refspecs, and the\n\"<remote>/HEAD\" feature is enabled only when we are fetching from a\nremote with configured refspecs. We could be defensive with a flag, but\nit didn't seem worth it to me (the absolute worse case is a useless\nredundant ref-prefix line sent to the server).\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n builtin/fetch.c        |  8 ++++++++\n t/t5702-protocol-v2.sh | 15 +++++++++++++++\n 2 files changed, 23 insertions(+)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 95fd0018b9..f142756441 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1766,6 +1766,14 @@ static int do_fetch(struct transport *transport,\n \t\t\t\t\t    branch->merge[i]->src);\n \t\t\t}\n \t\t}\n+\n+\t\t/*\n+\t\t * If there are no refs specified to fetch, then we just\n+\t\t * fetch HEAD; mention that to narrow the advertisement.\n+\t\t */\n+\t\tif (!transport_ls_refs_options.ref_prefixes.nr)\n+\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t\t    \"HEAD\");\n \t}\n \n \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\ndiff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\nindex cea8f92a3d..2f0a52a72d 100755\n--- a/t/t5702-protocol-v2.sh\n+++ b/t/t5702-protocol-v2.sh\n@@ -679,6 +679,21 @@ test_expect_success 'default refspec is used to filter ref when fetching' '\n \tgrep \"ref-prefix refs/tags/\" log\n '\n \n+test_expect_success 'set up parent for prefix tests' '\n+\tgit init prefix-parent &&\n+\tgit -C prefix-parent commit --allow-empty -m foo &&\n+\tgit -C prefix-parent branch unrelated-branch\n+'\n+\n+test_expect_success 'empty refspec filters refs when fetching' '\n+\tgit init configless-child &&\n+\n+\ttest_when_finished \"rm -f log\" &&\n+\tGIT_TRACE_PACKET=\"$(pwd)/log\" \\\n+\t\tgit -C configless-child fetch ../prefix-parent &&\n+\ttest_grep ! unrelated-branch log\n+'\n+\n test_expect_success 'fetch supports various ways of have lines' '\n \trm -rf server client trace &&\n \tgit init server &&\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513842","messageId":"20250309031039.GG2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 7/9] fetch: stop protecting additions to ref-prefix list","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:10:39Z","receivedAt":"2025-03-09T03:10:41Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"When using the ref-prefix feature of protocol v2, a client which sends\nno prefixes at all will get the full advertisement. And so the code in\ngit-fetch was historically loose about setting up that list based on our\nrefspecs. There were cases where we needed to know about some refs, so\nwe just didn't add anything to the ref-prefix list.\n\nAnd hence further code, like that for tag-following and updating\norigin/HEAD, had to be careful about adding to an empty list. E.g., see\nthe bug fixed by bd52d9a058 (fetch: fix following tags when fetching\nspecific OID, 2025-03-07).\n\nBut the previous commit removed the last such case, and now we know an\nempty ref-prefix list (at least inside git-fetch's do_fetch() function)\nmeans that we really don't need to see any refs. So we can drop those\nextra conditionals.\n\nThis simplifies the code a little. But it also means that some cases can\nnow use ref prefixes when they would not otherwise. As the test shows,\nfetching an exact oid into a local ref can now avoid enumerating all of\nthe refs. The refspec itself doesn't need to know about any remote refs,\nand the tag auto-following can just ask about refs/tags/.\n\nThe same is true for asking about HEAD to update the local origin/HEAD.\nI didn't add a test for that yet, though, as we can optimize it even\nfurther.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n builtin/fetch.c        | 10 ++++------\n t/t5702-protocol-v2.sh | 14 ++++++++++++++\n 2 files changed, 18 insertions(+), 6 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex f142756441..6ab101fa6d 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1778,16 +1778,14 @@ static int do_fetch(struct transport *transport,\n \n \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n \t\tmust_list_refs = 1;\n-\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n-\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n-\t\t\t\t    \"refs/tags/\");\n+\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t    \"refs/tags/\");\n \t}\n \n \tif (uses_remote_tracking(transport, rs)) {\n \t\tmust_list_refs = 1;\n-\t\tif (transport_ls_refs_options.ref_prefixes.nr)\n-\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n-\t\t\t\t    \"HEAD\");\n+\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n+\t\t\t    \"HEAD\");\n \t}\n \n \tif (must_list_refs) {\ndiff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\nindex 2f0a52a72d..626deb05f0 100755\n--- a/t/t5702-protocol-v2.sh\n+++ b/t/t5702-protocol-v2.sh\n@@ -682,6 +682,7 @@ test_expect_success 'default refspec is used to filter ref when fetching' '\n test_expect_success 'set up parent for prefix tests' '\n \tgit init prefix-parent &&\n \tgit -C prefix-parent commit --allow-empty -m foo &&\n+\tgit -C prefix-parent tag my-tag &&\n \tgit -C prefix-parent branch unrelated-branch\n '\n \n@@ -694,6 +695,19 @@ test_expect_success 'empty refspec filters refs when fetching' '\n \ttest_grep ! unrelated-branch log\n '\n \n+test_expect_success 'exact oid fetch with tag following' '\n+\tgit init exact-oid-tags &&\n+\n+\tcommit=$(git -C prefix-parent rev-parse --verify HEAD) &&\n+\n+\ttest_when_finished \"rm -f log\" &&\n+\tGIT_TRACE_PACKET=\"$(pwd)/log\" \\\n+\t\tgit -C exact-oid-tags fetch ../prefix-parent \\\n+\t\t\t$commit:refs/heads/exact &&\n+\ttest_grep ! unrelated-branch log &&\n+\tgit -C exact-oid-tags rev-parse --verify my-tag\n+'\n+\n test_expect_success 'fetch supports various ways of have lines' '\n \trm -rf server client trace &&\n \tgit init server &&\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513843","messageId":"20250309032016.GH2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 8/9] fetch: avoid ls-refs only to ask for HEAD symref update","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:20:16Z","receivedAt":"2025-03-09T03:20:17Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"When we fetch from a configured remote, we may try to update the local\nrefs/remotes/<origin>/HEAD, and so we ask the server to advertise its\nHEAD to us.\n\nBut if we aren't otherwise asking about any refs at all, then we know\nthis HEAD update can never happen! To consider a new value for HEAD,\nthe set_head() function uses guess_remote_head(). And even if it sees an\nexplicit symref value for HEAD, it will only report that as a match if\nwe also saw that remote ref advertised, and it mapped to a local\ntracking ref via get_fetch_map().\n\nIn other words, a fetch like this:\n\n  git fetch origin $exact_oid:refs/heads/foo\n\ncan never update HEAD, because we will never have fetched (nor even see\nthe advertisement for) the ref that HEAD points to.\n\nCurrently the command above will still call ls-refs to ask about the\nHEAD, even though it is pointless. This patch teaches it to skip the\nls-refs call entirely in this case, which avoids a round-trip to the\nserver.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\nThis describes the current behavior of set_head(). But I do wonder if it\nshould be more aggressive. If we found out that the other side is\npointing to refs/heads/foo, should we map that ourselves to find that it\nwould be stored as refs/remotes/origin/foo, and update HEAD anyway?\n\nThat would let us actually update HEAD in this case (and also in many\nother cases where we fetch a specific ref that is not pointed to by\nthe remote HEAD).\n\nOTOH, it would mean we basically always do an ls-refs just to find out\nabout HEAD. Which is working against the optimization from e70a3030e7\n(fetch: do not list refs if fetching only hashes, 2018-09-27), and the\ncode before this patch might even be considered a regression.\n\nI also wonder if the uses_remote_tracking() check added by 6c915c3f85\n(fetch: do not ask for HEAD unnecessarily, 2024-12-06) is not quite\nright. It is looking for a configured remote along with at least one\nrefspec with a destination. But wouldn't it need to have both a source\nref (not an exact oid) and a destination to work? I suspect we could do\nthe fix there and end up with the same optimized behavior as I have\nhere.\n\n builtin/fetch.c        |  5 ++---\n t/t5702-protocol-v2.sh | 13 +++++++++++++\n 2 files changed, 15 insertions(+), 3 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 6ab101fa6d..c26866e674 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1782,11 +1782,10 @@ static int do_fetch(struct transport *transport,\n \t\t\t    \"refs/tags/\");\n \t}\n \n-\tif (uses_remote_tracking(transport, rs)) {\n-\t\tmust_list_refs = 1;\n+\tif (must_list_refs &&\n+\t    uses_remote_tracking(transport, rs))\n \t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n \t\t\t    \"HEAD\");\n-\t}\n \n \tif (must_list_refs) {\n \t\ttrace2_region_enter(\"fetch\", \"remote_refs\", the_repository);\ndiff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\nindex 626deb05f0..4d0cbe9872 100755\n--- a/t/t5702-protocol-v2.sh\n+++ b/t/t5702-protocol-v2.sh\n@@ -708,6 +708,19 @@ test_expect_success 'exact oid fetch with tag following' '\n \tgit -C exact-oid-tags rev-parse --verify my-tag\n '\n \n+test_expect_success 'exact oid fetch avoids pointless HEAD request' '\n+\tgit init exact-oid-head &&\n+\tgit -C exact-oid-head remote add origin ../prefix-parent &&\n+\n+\tcommit=$(git -C prefix-parent rev-parse --verify HEAD) &&\n+\n+\ttest_when_finished \"rm -f log\" &&\n+\tGIT_TRACE_PACKET=\"$(pwd)/log\" \\\n+\t\tgit -C exact-oid-head fetch --no-tags origin \\\n+\t\t\t$commit:refs/heads/exact &&\n+\ttest_grep ! command=ls-refs log\n+'\n+\n test_expect_success 'fetch supports various ways of have lines' '\n \trm -rf server client trace &&\n \tgit init server &&\n-- \n2.49.0.rc1.381.gc60f5426ff\n\n"},{"id":"513844","messageId":"20250309032159.GI2334191@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"[PATCH 9/9] fetch: use ref prefix list to skip ls-refs","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-09T03:21:59Z","receivedAt":"2025-03-09T03:22:01Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"In git-fetch we have an optimization to avoid issuing an ls-refs command\nto the server if we don't care about the value of any refs (e.g.,\nbecause we are fetching exact object ids), saving a round-trip to the\nserver. This comes from e70a3030e7 (fetch: do not list refs if fetching\nonly hashes, 2018-09-27).\n\nIt uses an explicit flag \"must_list_refs\" to decide when we need to do\nso. That was needed back then, because the list of ref-prefixes was not\nalways complete. If it was empty, it did not necessarily mean that we\nwere not interested in any refs). But that is no longer the case; an\nempty list of prefixes means that we truly do not care about any refs.\n\nAnd so rather than an explicit flag, we can just check whether we are\ninterested in any ref prefixes. This simplifies the code slightly, as\nthere is now a single source of truth for the decision.\n\nIt also fixes a bug in / optimizes a very unlikely case, which is:\n\n  git fetch $remote ^foo $oid\n\nI.e., a negative refspec combined with an exact oid fetch. This is\nsomewhat nonsense, in that there are no positive refspecs mentioning\nrefs to countermand with the negative one. But we should be able to do\nthis without issuing an ls-refs command (excluding \"foo\" from the empty\nset will obviously still be the empty set).\n\nHowever, the current code does not do so. The negative refspec is not\ncounted as a noop in un-setting the must_list_refs flag (hardly the\nfault of e70a3030e7, as negative refspecs did not appear until much\nlater). But by using the prefix list as a source of truth, this\nnaturally just works; the negative refspec does not add a prefix to ask\nabout, and hence does not trigger the ls-refs call.\n\nThis is esoteric enough that I didn't bother adding a test. The real\nvalue here is in the code simplification.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n builtin/fetch.c | 27 +++++++--------------------\n 1 file changed, 7 insertions(+), 20 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex c26866e674..02af505469 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1718,7 +1718,6 @@ static int do_fetch(struct transport *transport,\n \tconst struct ref *remote_refs;\n \tstruct transport_ls_refs_options transport_ls_refs_options =\n \t\tTRANSPORT_LS_REFS_OPTIONS_INIT;\n-\tint must_list_refs = 1;\n \tstruct fetch_head fetch_head = { 0 };\n \tstruct strbuf err = STRBUF_INIT;\n \n@@ -1737,21 +1736,7 @@ static int do_fetch(struct transport *transport,\n \t}\n \n \tif (rs->nr) {\n-\t\tint i;\n-\n \t\trefspec_ref_prefixes(rs, &transport_ls_refs_options.ref_prefixes);\n-\n-\t\t/*\n-\t\t * We can avoid listing refs if all of them are exact\n-\t\t * OIDs\n-\t\t */\n-\t\tmust_list_refs = 0;\n-\t\tfor (i = 0; i < rs->nr; i++) {\n-\t\t\tif (!rs->items[i].exact_sha1) {\n-\t\t\t\tmust_list_refs = 1;\n-\t\t\t\tbreak;\n-\t\t\t}\n-\t\t}\n \t} else {\n \t\tstruct branch *branch = branch_get(NULL);\n \n@@ -1776,18 +1761,20 @@ static int do_fetch(struct transport *transport,\n \t\t\t\t    \"HEAD\");\n \t}\n \n-\tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n-\t\tmust_list_refs = 1;\n+\tif (tags == TAGS_SET || tags == TAGS_DEFAULT)\n \t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n \t\t\t    \"refs/tags/\");\n-\t}\n \n-\tif (must_list_refs &&\n+\tif (transport_ls_refs_options.ref_prefixes.nr &&\n \t    uses_remote_tracking(transport, rs))\n \t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n \t\t\t    \"HEAD\");\n \n-\tif (must_list_refs) {\n+\t/*\n+\t * Only initiate ref listing if we have at least one ref we want to\n+\t * know about.\n+\t */\n+\tif (transport_ls_refs_options.ref_prefixes.nr) {\n \t\ttrace2_region_enter(\"fetch\", \"remote_refs\", the_repository);\n \t\tremote_refs = transport_get_remote_refs(transport,\n \t\t\t\t\t\t\t&transport_ls_refs_options);\n-- \n2.49.0.rc1.381.gc60f5426ff\n"},{"id":"514115","messageId":"Z9H8uKevHUxasE4S@nand.local","threadId":"62871","inReplyTo":"20250309030101.GA2334064@coredump.intra.peff.net","subject":"Re: [PATCH 0/9] fetch: further ref-prefix cleanups and optimizations","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:29:28Z","receivedAt":"2025-03-12T21:29:31Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:01:01PM -0500, Jeff King wrote:\n> On Fri, Mar 07, 2025 at 06:27:03PM -0500, Taylor Blau wrote:\n>\n> > Peff and I talked about this today, and neither of us could find any\n> > reasons not to pursue the approach listed in the footnote of\n> >\n> >   <20250221072558.GA572877@coredump.intra.peff.net>\n> >\n> > , but this is a more conservative approach that should fix the issue and\n> > apply cleanly on top of 'maint'. It may be worth picking this into 2.49,\n> > even though we are already quite late into the -rc cycle, this is a\n> > fairly nasty bug.\n>\n> Yeah, I favor doing this simple fix first, and then trying the larger\n> (and slightly riskier) change on top.\n\nYeah, definitely. I think fixing the issue immediately is the most\nimportant thing we can do, but cleaning up the code (once the immediate\nissue has been resolved) is also worth doing.\n\n> I started to write up that larger patch, and found a number of\n> interesting things. ;) So here's a 9-patch series, which would apply on\n> top of tb/fetch-follow-tags-fix (but can very much wait to cook in the\n> next development cycle).\n\nWhat?! You found other things to clean up along the way? Blasphemy.\n\n>  builtin/fetch.c        | 46 +++++++++++++++++-------------------------\n>  refspec.c              | 22 ++++++++++++++------\n>  t/t5516-fetch-push.sh  | 12 ++++++-----\n>  t/t5702-protocol-v2.sh | 44 +++++++++++++++++++++++++++++++++++++++-\n>  4 files changed, 85 insertions(+), 39 deletions(-)\n\nKidding, of course, I am looking forward to reviewing it now.\n\nThanks,\nTaylor\n"},{"id":"514116","messageId":"Z9H82waDYvC3RVBH@nand.local","threadId":"62871","inReplyTo":"20250309030123.GA2334191@coredump.intra.peff.net","subject":"Re: [PATCH 1/9] t5702: fix typo in test name","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:30:03Z","receivedAt":"2025-03-12T21:30:05Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:01:23PM -0500, Jeff King wrote:\n> Signed-off-by: Jeff King <peff@peff.net>\n> ---\n>  t/t5702-protocol-v2.sh | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n>\n> diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\n> index d3df81e785..cea8f92a3d 100755\n> --- a/t/t5702-protocol-v2.sh\n> +++ b/t/t5702-protocol-v2.sh\n> @@ -665,7 +665,7 @@ test_expect_success 'even with handcrafted request, filter does not work if not\n>  \ttest-tool -C server serve-v2 --stateless-rpc <in >/dev/null\n>  '\n>\n> -test_expect_success 'default refspec is used to filter ref when fetchcing' '\n> +test_expect_success 'default refspec is used to filter ref when fetching' '\n\nMaybe I am not seeing enough of the context below to know for sure, but\n\n    s/ref/&s\n\n?\n\nThanks,\nTaylor\n"},{"id":"514117","messageId":"Z9H9CnQxvf2nnYgN@nand.local","threadId":"62871","inReplyTo":"20250309030203.GC2334191@coredump.intra.peff.net","subject":"Re: [PATCH 3/9] t5516: drop NEEDSWORK about v2 reachability behavior","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:30:50Z","receivedAt":"2025-03-12T21:30:52Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:02:03PM -0500, Jeff King wrote:\n> At this point that behavior is well established, and I do not think we\n> would ever change v2 to match the v0 behavior (and if we did,\n> remembering to update this test is the least of our concerns).\n\n;-), indeed.\n\nThanks,\nTaylor\n"},{"id":"514118","messageId":"Z9H+vWHFkATWNLxt@nand.local","threadId":"62871","inReplyTo":"20250309030706.GE2334191@coredump.intra.peff.net","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:38:05Z","receivedAt":"2025-03-12T21:38:07Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:07:06PM -0500, Jeff King wrote:\n> The point of refspec_ref_prefixes() is to look over the set of refspecs\n> and set up an appropriate list of \"ref-prefix\" strings to send to the\n> server.\n\nWhile we're cleaning things up, I wonder if it is worth (slightly)\nrenaming this function to something more descriptive, like:\n\n    refspecs_to_ref_prefixes()\n\n, where we pluralize \"refspec\" and add \"to\" to make it clear that we're\nconverting from one to the other.\n\n> Of course this is all completely academic. We have still not implemented\n> a v2 push protocol, so even though we do call this function for pushes,\n> we'd never actually send these ref-prefix lines.\n>\n> However, given the effort I spent to figure out what was going on here,\n> and the overlapping exact_sha1 checks, I'd like to rewrite this to\n> preemptively fix the bug, and hopefully make it less confusing.\n\nAll makes sense.\n\n> This splits the \"if\" at the top-level into fetch vs push, and then each\n> handles exact_sha1 appropriately itself. The check for negative refspecs\n> remains outside of either (there is no protocol support for them, so we\n> never send them to the server, but rather use them only to reduce the\n> advertisement we receive).\n>\n> The resulting behavior should be identical for fetches, but hopefully\n> sets us up better for a potential future v2 push.\n>\n> Signed-off-by: Jeff King <peff@peff.net>\n> ---\n> This could be dropped without affecting the rest of the series if it's\n> too churn-y.\n>\n>  refspec.c | 22 ++++++++++++++++------\n>  1 file changed, 16 insertions(+), 6 deletions(-)\n>\n> diff --git a/refspec.c b/refspec.c\n> index 4cb80b5208..c6ad515f04 100644\n> --- a/refspec.c\n> +++ b/refspec.c\n> @@ -246,14 +246,24 @@ void refspec_ref_prefixes(const struct refspec *rs,\n>  \t\tconst struct refspec_item *item = &rs->items[i];\n>  \t\tconst char *prefix = NULL;\n>\n> -\t\tif (item->exact_sha1 || item->negative)\n> +\t\tif (item->negative)\n>  \t\t\tcontinue;\n> -\t\tif (rs->fetch == REFSPEC_FETCH)\n> -\t\t\tprefix = item->src;\n> -\t\telse if (item->dst)\n> -\t\t\tprefix = item->dst;\n> -\t\telse if (item->src && !item->exact_sha1)\n> +\n> +\t\tif (rs->fetch == REFSPEC_FETCH) {\n\nDo you think it'd be worth handling rs->fetch in a switch/case block? At\nleast that would allow us to catch unknown values more easily, though it\nseems unlikely we'd ever add any :-).\n\n> +\t\t\tif (item->exact_sha1)\n> +\t\t\t\tcontinue;\n>  \t\t\tprefix = item->src;\n> +\t\t} else {\n> +\t\t\t/*\n> +\t\t\t * Pushes can have an explicit destination like\n> +\t\t\t * \"foo:bar\", or can implicitly use the src for both\n> +\t\t\t * (\"foo\" is the same as \"foo:foo\").\n> +\t\t\t */\n> +\t\t\tif (item->dst)\n> +\t\t\t\tprefix = item->dst;\n> +\t\t\telse if (item->src && !item->exact_sha1)\n> +\t\t\t\tprefix = item->src;\n> +\t\t}\n\nAll makes sense.\n\nThanks,\nTaylor\n"},{"id":"514123","messageId":"Z9H//JHtYTGqHI3n@nand.local","threadId":"62871","inReplyTo":"20250309030847.GF2334191@coredump.intra.peff.net","subject":"Re: [PATCH 6/9] fetch: ask server to advertise HEAD for config-less fetch","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:43:24Z","receivedAt":"2025-03-12T21:43:26Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:08:47PM -0500, Jeff King wrote:\n> If we're not given any refspecs (either on the command line or via\n> config) and we have no branch merge config, then we fetch the remote\n> HEAD into our local FETCH_HEAD. In that case we do not send any\n> ref-prefix option to the server at all, and we see the full\n> advertisement.\n>\n> But this is sub-optimal. We only care about HEAD, so we can just ask\n> for that, and ignore all of the other refs.\n>\n> The new test demonstrates a case where we see fewer refs (in this case\n> only one less, but in theory we could be ignoring millions of them).\n>\n> This also removes the only case where we care about seeing some refs\n> from the other side, but don't add anything to the ref_prefixes list.\n> Cleaning this up means one less maintenance burden. Before this patch,\n> any code which wanted to add to the list had to make sure the list was\n> not empty, since an empty list meant \"ask for everything\". Now it really\n> means \"we are not interested in any refs\".\n\nYes. The optimization is nice on its own, but I think this is the real\nbenefit to this patch IMHO.\n\n> This should let us optimize a few more cases in subsequent patches.\n\n;-).\n\n> Note that we'll add \"HEAD\" to the list of prefixes, and later code for\n> updating \"refs/remotes/<remote>/HEAD\" may likewise do so. In theory this\n> could cause duplicates in the list, but in practice these can't both\n> trigger. We hit our new case only if there are no refspecs, and the\n> \"<remote>/HEAD\" feature is enabled only when we are fetching from a\n> remote with configured refspecs. We could be defensive with a flag, but\n> it didn't seem worth it to me (the absolute worse case is a useless\n> redundant ref-prefix line sent to the server).\n\nYeah, I think that we already do this in some instances that you and I\ntalked about off-list, but I can't remember exactly what I did to\nprovoke it. In either case, the server responds correctly, so I don't\nthink it's so urgent to deal with ATM.\n\n> diff --git a/builtin/fetch.c b/builtin/fetch.c\n> index 95fd0018b9..f142756441 100644\n> --- a/builtin/fetch.c\n> +++ b/builtin/fetch.c\n> @@ -1766,6 +1766,14 @@ static int do_fetch(struct transport *transport,\n>  \t\t\t\t\t    branch->merge[i]->src);\n>  \t\t\t}\n>  \t\t}\n> +\n> +\t\t/*\n> +\t\t * If there are no refs specified to fetch, then we just\n> +\t\t * fetch HEAD; mention that to narrow the advertisement.\n> +\t\t */\n> +\t\tif (!transport_ls_refs_options.ref_prefixes.nr)\n> +\t\t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n> +\t\t\t\t    \"HEAD\");\n\nMakes sense. If we know that we just want to fetch HEAD into FETCH_HEAD\nand we haven't already limited the advertisement, we are free to do so\nnow.\n\n>  \tif (tags == TAGS_SET || tags == TAGS_DEFAULT) {\n> diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\n> index cea8f92a3d..2f0a52a72d 100755\n> --- a/t/t5702-protocol-v2.sh\n> +++ b/t/t5702-protocol-v2.sh\n> @@ -679,6 +679,21 @@ test_expect_success 'default refspec is used to filter ref when fetching' '\n>  \tgrep \"ref-prefix refs/tags/\" log\n>  '\n>\n> +test_expect_success 'set up parent for prefix tests' '\n> +\tgit init prefix-parent &&\n> +\tgit -C prefix-parent commit --allow-empty -m foo &&\n\nAny reason to use a bona-fide \"commit\" here instead of \"test_commit\"?\n\nNot a big deal either way, of course, I'm just curious.\n\n> +\tgit -C prefix-parent branch unrelated-branch\n> +'\n> +\n> +test_expect_success 'empty refspec filters refs when fetching' '\n> +\tgit init configless-child &&\n> +\n> +\ttest_when_finished \"rm -f log\" &&\n> +\tGIT_TRACE_PACKET=\"$(pwd)/log\" \\\n> +\t\tgit -C configless-child fetch ../prefix-parent &&\n> +\ttest_grep ! unrelated-branch log\n\nVery clean, nice.\n\nThanks,\nTaylor\n"},{"id":"514126","messageId":"Z9IAYRKJHgf9XIb5@nand.local","threadId":"62871","inReplyTo":"20250309031039.GG2334191@coredump.intra.peff.net","subject":"Re: [PATCH 7/9] fetch: stop protecting additions to ref-prefix list","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:45:05Z","receivedAt":"2025-03-12T21:45:07Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Sat, Mar 08, 2025 at 10:10:39PM -0500, Jeff King wrote:\n> ---\n>  builtin/fetch.c        | 10 ++++------\n>  t/t5702-protocol-v2.sh | 14 ++++++++++++++\n>  2 files changed, 18 insertions(+), 6 deletions(-)\n\nNo comments from me here, since this is very clearly explained and setup\nwithin the context of the rest of the series. The end result is very,\nvery nice indeed.\n\nThanks,\nTaylor\n"},{"id":"514128","messageId":"Z9IBZmh4Cr2jq7E4@nand.local","threadId":"62871","inReplyTo":"Z9H8uKevHUxasE4S@nand.local","subject":"Re: [PATCH 0/9] fetch: further ref-prefix cleanups and optimizations","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-12T21:49:26Z","receivedAt":"2025-03-12T21:49:28Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Wed, Mar 12, 2025 at 05:29:28PM -0400, Taylor Blau wrote:\n> >  builtin/fetch.c        | 46 +++++++++++++++++-------------------------\n> >  refspec.c              | 22 ++++++++++++++------\n> >  t/t5516-fetch-push.sh  | 12 ++++++-----\n> >  t/t5702-protocol-v2.sh | 44 +++++++++++++++++++++++++++++++++++++++-\n> >  4 files changed, 85 insertions(+), 39 deletions(-)\n>\n> Kidding, of course, I am looking forward to reviewing it now.\n\nThis looks great to me. I left a few minor comments throughout, but am\nunsurprisingly on-board with the overall approach as you and I discussed\nthis off-list a week or two ago.\n\n    Reviewed-by: Taylor Blau <me@ttaylorr.com>\n\nThanks,\nTaylor\n"},{"id":"514157","messageId":"20250313053733.GD94015@coredump.intra.peff.net","threadId":"62871","inReplyTo":"Z9H82waDYvC3RVBH@nand.local","subject":"Re: [PATCH 1/9] t5702: fix typo in test name","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-13T05:37:33Z","receivedAt":"2025-03-13T05:37:35Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Mar 12, 2025 at 05:30:03PM -0400, Taylor Blau wrote:\n\n> On Sat, Mar 08, 2025 at 10:01:23PM -0500, Jeff King wrote:\n> > Signed-off-by: Jeff King <peff@peff.net>\n> > ---\n> >  t/t5702-protocol-v2.sh | 2 +-\n> >  1 file changed, 1 insertion(+), 1 deletion(-)\n> >\n> > diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh\n> > index d3df81e785..cea8f92a3d 100755\n> > --- a/t/t5702-protocol-v2.sh\n> > +++ b/t/t5702-protocol-v2.sh\n> > @@ -665,7 +665,7 @@ test_expect_success 'even with handcrafted request, filter does not work if not\n> >  \ttest-tool -C server serve-v2 --stateless-rpc <in >/dev/null\n> >  '\n> >\n> > -test_expect_success 'default refspec is used to filter ref when fetchcing' '\n> > +test_expect_success 'default refspec is used to filter ref when fetching' '\n> \n> Maybe I am not seeing enough of the context below to know for sure, but\n> \n>     s/ref/&s\n> \n> ?\n\nPossibly.\n\nI think you could read it as \"it should filter refs\" (which it obviously\nshould). But you could also read it as \"it should filter some singular\nref that we do not expect to find in the result\". Of course the test\nitself seems to just snoop on the protocol conversation, which I guess\nis more like the first reading.\n\nI didn't really want to get into word-smithing the test titles. I just\ncouldn't handle seeing that typo over and over while working on adjacent\ntests.\n\n-Peff\n"},{"id":"514158","messageId":"20250313054107.GE94015@coredump.intra.peff.net","threadId":"62871","inReplyTo":"Z9H+vWHFkATWNLxt@nand.local","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-13T05:41:07Z","receivedAt":"2025-03-13T05:41:09Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Mar 12, 2025 at 05:38:05PM -0400, Taylor Blau wrote:\n\n> On Sat, Mar 08, 2025 at 10:07:06PM -0500, Jeff King wrote:\n> > The point of refspec_ref_prefixes() is to look over the set of refspecs\n> > and set up an appropriate list of \"ref-prefix\" strings to send to the\n> > server.\n> \n> While we're cleaning things up, I wonder if it is worth (slightly)\n> renaming this function to something more descriptive, like:\n> \n>     refspecs_to_ref_prefixes()\n> \n> , where we pluralize \"refspec\" and add \"to\" to make it clear that we're\n> converting from one to the other.\n\nI think a \"struct refspec\" is plural (despite the name). The singular is\n\"refspec_item\".\n\nAnd...\n\n> > diff --git a/refspec.c b/refspec.c\n> > index 4cb80b5208..c6ad515f04 100644\n> > --- a/refspec.c\n> > +++ b/refspec.c\n> > @@ -246,14 +246,24 @@ void refspec_ref_prefixes(const struct refspec *rs,\n> >  \t\tconst struct refspec_item *item = &rs->items[i];\n> >  \t\tconst char *prefix = NULL;\n> >\n> > -\t\tif (item->exact_sha1 || item->negative)\n> > +\t\tif (item->negative)\n> >  \t\t\tcontinue;\n> > -\t\tif (rs->fetch == REFSPEC_FETCH)\n> > -\t\t\tprefix = item->src;\n> > -\t\telse if (item->dst)\n> > -\t\t\tprefix = item->dst;\n> > -\t\telse if (item->src && !item->exact_sha1)\n> > +\n> > +\t\tif (rs->fetch == REFSPEC_FETCH) {\n> \n> Do you think it'd be worth handling rs->fetch in a switch/case block? At\n> least that would allow us to catch unknown values more easily, though it\n> seems unlikely we'd ever add any :-).\n\n...this whole thing is badly named. It is called \"fetch\", but the only\ntwo values are true/false. But for some reason we named them\nREFSPEC_FETCH and REFSPEC_PUSH. Surely it should be \"type\" or\n\"operation\" or something if we were going to use an enum and switch?\n\nI tried to limit the extent of my changes on opinionated matters like\nthis. I almost dropped the patch entirely, but I did enough\nhead-scratching to find that latent bug that I didn't want to lose it.\n\nIf you want to fix the name and other clarity issues on top, I don't\nmind, though. ;)\n\n-Peff\n"},{"id":"514159","messageId":"20250313054644.GF94015@coredump.intra.peff.net","threadId":"62871","inReplyTo":"Z9H//JHtYTGqHI3n@nand.local","subject":"Re: [PATCH 6/9] fetch: ask server to advertise HEAD for config-less fetch","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-13T05:46:44Z","receivedAt":"2025-03-13T05:46:46Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Mar 12, 2025 at 05:43:24PM -0400, Taylor Blau wrote:\n\n> > Note that we'll add \"HEAD\" to the list of prefixes, and later code for\n> > updating \"refs/remotes/<remote>/HEAD\" may likewise do so. In theory this\n> > could cause duplicates in the list, but in practice these can't both\n> > trigger. We hit our new case only if there are no refspecs, and the\n> > \"<remote>/HEAD\" feature is enabled only when we are fetching from a\n> > remote with configured refspecs. We could be defensive with a flag, but\n> > it didn't seem worth it to me (the absolute worse case is a useless\n> > redundant ref-prefix line sent to the server).\n> \n> Yeah, I think that we already do this in some instances that you and I\n> talked about off-list, but I can't remember exactly what I did to\n> provoke it. In either case, the server responds correctly, so I don't\n> think it's so urgent to deal with ATM.\n\nYeah, I thought we did, too, but after looking at the code, I doubt it.\nI think we were always playing with exact-oid refspecs, so we'd always\nhit the \"if (rs->nr)\" side of that conditional.\n\nIn order to hit the case touched by this patch, you can't have refspecs,\nbut still need to somehow get a true answer out of\nuses_remote_tracking().\n\n> > +test_expect_success 'set up parent for prefix tests' '\n> > +\tgit init prefix-parent &&\n> > +\tgit -C prefix-parent commit --allow-empty -m foo &&\n> \n> Any reason to use a bona-fide \"commit\" here instead of \"test_commit\"?\n> \n> Not a big deal either way, of course, I'm just curious.\n\nNope, I mostly just reach for \"git commit\" without thinking because\nthat's what I naturally do while debugging or exploring.\n\nBut since you asked...;)\n\nI do find test_commit a bit bloated in general.  It takes several\ncommands versus one, leaves cruft files in the working tree (that you\nneed to care about not using again, lest your commit fail with \"no\nchanges\"), and by default makes tags that sometimes cause confusion\nabout fetching, reachability, and so on.\n\nThe one thing it does do that git-commit doesn't is increment test_tick.\nThat sometimes is important (if you care about traversal ordering), but\nusually doesn't.\n\nSo I dunno. Maybe I am a bad person for not using test_commit by default\nand we should have a style suggestion there.\n\n-Peff\n"},{"id":"514160","messageId":"20250313055010.GG94015@coredump.intra.peff.net","threadId":"62871","inReplyTo":"Z9IBZmh4Cr2jq7E4@nand.local","subject":"Re: [PATCH 0/9] fetch: further ref-prefix cleanups and optimizations","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-13T05:50:10Z","receivedAt":"2025-03-13T05:50:11Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Mar 12, 2025 at 05:49:26PM -0400, Taylor Blau wrote:\n\n> On Wed, Mar 12, 2025 at 05:29:28PM -0400, Taylor Blau wrote:\n> > >  builtin/fetch.c        | 46 +++++++++++++++++-------------------------\n> > >  refspec.c              | 22 ++++++++++++++------\n> > >  t/t5516-fetch-push.sh  | 12 ++++++-----\n> > >  t/t5702-protocol-v2.sh | 44 +++++++++++++++++++++++++++++++++++++++-\n> > >  4 files changed, 85 insertions(+), 39 deletions(-)\n> >\n> > Kidding, of course, I am looking forward to reviewing it now.\n> \n> This looks great to me. I left a few minor comments throughout, but am\n> unsurprisingly on-board with the overall approach as you and I discussed\n> this off-list a week or two ago.\n> \n>     Reviewed-by: Taylor Blau <me@ttaylorr.com>\n\nThanks. My biggest question is on patch 8, and whether the existing\nset_head() feature really ought to be more aggressive about pointing at\nstuff we didn't fetch (and that could even be unborn on our side!).\n\nI don't have a strong opinion either way, but it would mean adjusting\nthe idea of when set_head() kicks in (e.g., should we do it for every\nfetch, or should exact-oid fetches continue to optimize out the ls-refs\ncall?).\n\n-Peff\n"},{"id":"514175","messageId":"xmqqbju5ru9q.fsf@gitster.g","threadId":"62871","inReplyTo":"20250313054644.GF94015@coredump.intra.peff.net","subject":"Re: [PATCH 6/9] fetch: ask server to advertise HEAD for config-less fetch","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-13T12:26:41Z","receivedAt":"2025-03-13T12:26:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n>> Any reason to use a bona-fide \"commit\" here instead of \"test_commit\"?\n>> \n>> Not a big deal either way, of course, I'm just curious.\n>\n> Nope, I mostly just reach for \"git commit\" without thinking because\n> that's what I naturally do while debugging or exploring.\n>\n> But since you asked...;)\n>\n> I do find test_commit a bit bloated in general.  It takes several\n> commands versus one, leaves cruft files in the working tree (that you\n> need to care about not using again, lest your commit fail with \"no\n> changes\"), and by default makes tags that sometimes cause confusion\n> about fetching, reachability, and so on.\n>\n> The one thing it does do that git-commit doesn't is increment test_tick.\n> That sometimes is important (if you care about traversal ordering), but\n> usually doesn't.\n>\n> So I dunno. Maybe I am a bad person for not using test_commit by default\n> and we should have a style suggestion there.\n\nFWIW, my assessment on test_commit exactly matches yours.  The cruft\nfiles it creates are often not what I want, the tags left by default\nare even worse, and the only good thing about it is the tick support\nbut even that does not make much of difference in many scenarios.\n\nTo its defence, I _suspect_ the automated creation of default\nchanges were useful back when there were no \"allow-empty\" support.\nBut I think it outlived its usefulness.\n"},{"id":"514180","messageId":"xmqq5xkdrrhs.fsf@gitster.g","threadId":"62871","inReplyTo":"20250313054107.GE94015@coredump.intra.peff.net","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-13T13:26:39Z","receivedAt":"2025-03-13T13:26:42Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n>> > +\t\tif (rs->fetch == REFSPEC_FETCH) {\n>> \n>> Do you think it'd be worth handling rs->fetch in a switch/case block? At\n>> least that would allow us to catch unknown values more easily, though it\n>> seems unlikely we'd ever add any :-).\n>\n> ...this whole thing is badly named. It is called \"fetch\", but the only\n> two values are true/false. But for some reason we named them\n> REFSPEC_FETCH and REFSPEC_PUSH. Surely it should be \"type\" or\n> \"operation\" or something if we were going to use an enum and switch?\n\nSorry, I suspect that it is my fault.  I've never been good at\nnaming, and if the allowed values for this member are FETCH and\nPUSH, then the member itself shouldn't be called fetch or push.\n\nPerhaps 'direction'.\n\nBut such a name improvement is clearly outside the scope of this\nfix.\n\nThanks.\n"},{"id":"514203","messageId":"xmqq4izxq63y.fsf@gitster.g","threadId":"62871","inReplyTo":"20250309032016.GH2334191@coredump.intra.peff.net","subject":"Re: [PATCH 8/9] fetch: avoid ls-refs only to ask for HEAD symref update","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-13T15:53:53Z","receivedAt":"2025-03-13T15:53:56Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> When we fetch from a configured remote, we may try to update the local\n> refs/remotes/<origin>/HEAD, and so we ask the server to advertise its\n> HEAD to us.\n\nYes.  \n\nI _think_ flipping the remote-tracking HEAD should be tied to the\ncase where we are fetching to update the remote-tracking branches.\n\n> But if we aren't otherwise asking about any refs at all, then we know\n> this HEAD update can never happen! To consider a new value for HEAD,\n> the set_head() function uses guess_remote_head(). And even if it sees an\n> explicit symref value for HEAD, it will only report that as a match if\n> we also saw that remote ref advertised, and it mapped to a local\n> tracking ref via get_fetch_map().\n>\n> In other words, a fetch like this:\n>\n>   git fetch origin $exact_oid:refs/heads/foo\n>\n> can never update HEAD, because we will never have fetched (nor even see\n> the advertisement for) the ref that HEAD points to.\n\nGood observation, and I actually think it would be counter-intuitive\nif remote HEAD gets updated by a fetch that does not even update the\nremote-tracking branches.\n\nMy preference is to keep the rule simple.\n\n    If you fetch using the configured fetch refspec, i.e. \"git fetch\n    [<remote>]\" without any refspec command line arguments, that is\n    an operation to maintain your remote-tracking branches for that\n    remote up-to-date, hence we also try to flip remote-tracking\n    HEAD (if you told us to) during such a fetch.\n\nIf you are doing a single-object fetch (perhaps as a lazy-fill from\npromisor remote), I do not think I want to see anything else happen\nthan that the single-object comes here.\n\nThanks.\n"},{"id":"514427","messageId":"20250317180604.GB704553@coredump.intra.peff.net","threadId":"62871","inReplyTo":"xmqq4izxq63y.fsf@gitster.g","subject":"Re: [PATCH 8/9] fetch: avoid ls-refs only to ask for HEAD symref update","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-17T18:06:04Z","receivedAt":"2025-03-17T18:06:05Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Mar 13, 2025 at 08:53:53AM -0700, Junio C Hamano wrote:\n\n> > In other words, a fetch like this:\n> >\n> >   git fetch origin $exact_oid:refs/heads/foo\n> >\n> > can never update HEAD, because we will never have fetched (nor even see\n> > the advertisement for) the ref that HEAD points to.\n> \n> Good observation, and I actually think it would be counter-intuitive\n> if remote HEAD gets updated by a fetch that does not even update the\n> remote-tracking branches.\n> \n> My preference is to keep the rule simple.\n> \n>     If you fetch using the configured fetch refspec, i.e. \"git fetch\n>     [<remote>]\" without any refspec command line arguments, that is\n>     an operation to maintain your remote-tracking branches for that\n>     remote up-to-date, hence we also try to flip remote-tracking\n>     HEAD (if you told us to) during such a fetch.\n> \n> If you are doing a single-object fetch (perhaps as a lazy-fill from\n> promisor remote), I do not think I want to see anything else happen\n> than that the single-object comes here.\n\nThat was my intuition, too, but there's a case in between. Doing:\n\n  git fetch origin main\n\nwill update HEAD, too (with the current code). But if and only if it\npoints to \"main\"! Is that something we want to keep? It feels like it\ncould sometimes be useful, but it is awfully hard to explain.\n\nSo I could see going in two different directions:\n\n  1. Only do the HEAD update when we are using the configured refspecs.\n\n  2. Do the HEAD update even when we are not fetching its destination,\n     but do not otherwise trigger ls-refs to discover it (so basically,\n     not on object-only fetches). This kicks in for more cases, but is\n     hard to explain.\n\nBoth are a user-visible divergence from how the feature behaves now (and\nso I did not want to touch that in my series), but if we are all in\nagreement, we can fix it on top. I do think option 1 (i.e., what you are\nsuggesting in your email) is how I would have done it if starting from\nscratch. And the current rules are weird enough and the feature is new\nenough that I think it is OK to change.\n\n-Peff\n"},{"id":"514431","messageId":"xmqq1puva3cu.fsf@gitster.g","threadId":"62871","inReplyTo":"20250317180604.GB704553@coredump.intra.peff.net","subject":"Re: [PATCH 8/9] fetch: avoid ls-refs only to ask for HEAD symref update","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-17T19:01:21Z","receivedAt":"2025-03-17T19:01:24Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> That was my intuition, too, but there's a case in between. Doing:\n>\n>   git fetch origin main\n>\n> will update HEAD, too (with the current code).\n\nGood point, and I do not think it should.\n\n> But if and only if it\n> points to \"main\"! Is that something we want to keep? It feels like it\n> could sometimes be useful, but it is awfully hard to explain.\n\nAgain, I do not think it should update HEAD.  Is this something hard\nto fix?  When I say \"please tell me where their main branch is\",\nthat is what I mean.  I didn't ask about their HEAD, period.  Unlike\n\"git fetch\" (that default to 'origin') and \"git fetch origin\", which\nis \"please update our view of 'origin'\" and should update HEAD if it\nis missing (or configured to be updated every time).\n\n> So I could see going in two different directions:\n>\n>   1. Only do the HEAD update when we are using the configured refspecs.\n>\n>   2. Do the HEAD update even when we are not fetching its destination,\n>      but do not otherwise trigger ls-refs to discover it (so basically,\n>      not on object-only fetches). This kicks in for more cases, but is\n>      hard to explain.\n>\n> Both are a user-visible divergence from how the feature behaves now (and\n> so I did not want to touch that in my series), but if we are all in\n> agreement, we can fix it on top. I do think option 1 (i.e., what you are\n> suggesting in your email) is how I would have done it if starting from\n> scratch. And the current rules are weird enough and the feature is new\n> enough that I think it is OK to change.\n\nYup, I do think #1 is the way to go.\n\nThanks.\n"},{"id":"514440","messageId":"Z9ibhJxjlc2DxKdX@nand.local","threadId":"62871","inReplyTo":"20250313054107.GE94015@coredump.intra.peff.net","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:00:36Z","receivedAt":"2025-03-17T22:00:39Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Thu, Mar 13, 2025 at 01:41:07AM -0400, Jeff King wrote:\n> > Do you think it'd be worth handling rs->fetch in a switch/case block? At\n> > least that would allow us to catch unknown values more easily, though it\n> > seems unlikely we'd ever add any :-).\n>\n> ...this whole thing is badly named. It is called \"fetch\", but the only\n> two values are true/false. But for some reason we named them\n> REFSPEC_FETCH and REFSPEC_PUSH. Surely it should be \"type\" or\n> \"operation\" or something if we were going to use an enum and switch?\n>\n> I tried to limit the extent of my changes on opinionated matters like\n> this. I almost dropped the patch entirely, but I did enough\n> head-scratching to find that latent bug that I didn't want to lose it.\n>\n> If you want to fix the name and other clarity issues on top, I don't\n> mind, though. ;)\n\nOK... I agree that these are at least named confusingly ;-). We could do\nsomething like:\n\n--- 8< ---\ndiff --git a/refspec.c b/refspec.c\nindex c6ad515f04..07d401bc71 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -181,14 +181,14 @@ void refspec_item_clear(struct refspec_item *item)\n void refspec_init(struct refspec *rs, int fetch)\n {\n \tmemset(rs, 0, sizeof(*rs));\n-\trs->fetch = fetch;\n+\trs->type = fetch ? REFSPEC_FETCH : REFSPEC_PUSH;\n }\n\n void refspec_append(struct refspec *rs, const char *refspec)\n {\n \tstruct refspec_item item;\n\n-\trefspec_item_init_or_die(&item, refspec, rs->fetch);\n+\trefspec_item_init_or_die(&item, refspec, rs->type);\n\n \tALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);\n \trs->items[rs->nr] = item;\n@@ -227,7 +227,7 @@ void refspec_clear(struct refspec *rs)\n \trs->alloc = 0;\n \trs->nr = 0;\n\n-\trs->fetch = 0;\n+\trs->type = 0;\n }\n\n int valid_fetch_refspec(const char *fetch_refspec_str)\n@@ -249,11 +249,13 @@ void refspec_ref_prefixes(const struct refspec *rs,\n \t\tif (item->negative)\n \t\t\tcontinue;\n\n-\t\tif (rs->fetch == REFSPEC_FETCH) {\n+\t\tswitch (rs->type) {\n+\t\tcase REFSPEC_FETCH:\n \t\t\tif (item->exact_sha1)\n \t\t\t\tcontinue;\n \t\t\tprefix = item->src;\n-\t\t} else {\n+\t\t\tbreak;\n+\t\tcase REFSPEC_PUSH:\n \t\t\t/*\n \t\t\t * Pushes can have an explicit destination like\n \t\t\t * \"foo:bar\", or can implicitly use the src for both\n@@ -263,6 +265,9 @@ void refspec_ref_prefixes(const struct refspec *rs,\n \t\t\t\tprefix = item->dst;\n \t\t\telse if (item->src && !item->exact_sha1)\n \t\t\t\tprefix = item->src;\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\tBUG(\"unexpected refspec type %d\", rs->type);\n \t\t}\n\n \t\tif (!prefix)\ndiff --git a/refspec.h b/refspec.h\nindex 382ba2d5c1..a20cf883e4 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -32,8 +32,8 @@ struct refspec_item {\n\n struct string_list;\n\n-#define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH }\n-#define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH }\n+#define REFSPEC_INIT_PUSH { .type = REFSPEC_PUSH }\n+#define REFSPEC_INIT_FETCH { .type = REFSPEC_FETCH }\n\n /**\n  * An array of strings can be parsed into a struct refspec using\n@@ -45,9 +45,9 @@ struct refspec {\n \tint nr;\n\n \tenum {\n-\t\tREFSPEC_PUSH\n+\t\tREFSPEC_PUSH,\n \t\tREFSPEC_FETCH,\n-\t} fetch;\n+\t} type;\n };\n\n int refspec_item_init(struct refspec_item *item, const char *refspec,\n--- >8 ---\n\n, which gives us the \"default\" case in the switch statement. But this\nreally is a boolean. I wonder if we should just use 0/1 constants and\nleave the field name alone. That would turn something like:\n\n    if (rs->fetch == REFSPEC_FETCH) { ... }\n\ninto:\n\n    if (rs->fetch) { ... }\n\n, which I think is cleaner. There's no reason to rename true/false to\nFETCH and PUSH if the field name itself is already 'fetch'.\n\nThanks,\nTaylor\n"},{"id":"514443","messageId":"Z9ig8yuQ/lEOgRj6@nand.local","threadId":"62871","inReplyTo":"xmqqbju5ru9q.fsf@gitster.g","subject":"Re: [PATCH 6/9] fetch: ask server to advertise HEAD for config-less fetch","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:23:47Z","receivedAt":"2025-03-17T22:23:49Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Thu, Mar 13, 2025 at 05:26:41AM -0700, Junio C Hamano wrote:\n> Jeff King <peff@peff.net> writes:\n>\n> >> Any reason to use a bona-fide \"commit\" here instead of \"test_commit\"?\n> >>\n> >> Not a big deal either way, of course, I'm just curious.\n> >\n> > Nope, I mostly just reach for \"git commit\" without thinking because\n> > that's what I naturally do while debugging or exploring.\n> >\n> > But since you asked...;)\n> >\n> > I do find test_commit a bit bloated in general.  It takes several\n> > commands versus one, leaves cruft files in the working tree (that you\n> > need to care about not using again, lest your commit fail with \"no\n> > changes\"), and by default makes tags that sometimes cause confusion\n> > about fetching, reachability, and so on.\n> >\n> > The one thing it does do that git-commit doesn't is increment test_tick.\n> > That sometimes is important (if you care about traversal ordering), but\n> > usually doesn't.\n> >\n> > So I dunno. Maybe I am a bad person for not using test_commit by default\n> > and we should have a style suggestion there.\n>\n> FWIW, my assessment on test_commit exactly matches yours.  The cruft\n> files it creates are often not what I want, the tags left by default\n> are even worse, and the only good thing about it is the tick support\n> but even that does not make much of difference in many scenarios.\n>\n> To its defence, I _suspect_ the automated creation of default\n> changes were useful back when there were no \"allow-empty\" support.\n> But I think it outlived its usefulness.\n\nI don't disagree, but converting the 2,570 instances of 'test_commit'\nthat I have in my tree would be difficult to do without disrupting lots\nof in-flight work ;-).\n\nThanks,\nTaylor\n"},{"id":"514445","messageId":"cover.1742250259.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"xmqq5xkdrrhs.fsf@gitster.g","subject":"[PATCH 0/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:24:20Z","receivedAt":"2025-03-17T22:24:22Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"This series explores treating the 'fetch' field of 'struct refspec' as a\nBoolean, instead of taking on values called \"REFSPEC_FETCH\" and\n\"REFSPEC_PUSH\".\n\nThe refactoring takes place in a couple of steps, but IMHO the end\nresult is pleasing and an improvement in clarity over the existing API.\n\nFor reference, in one of the patches above, I had suggested replacing\nsomething like:\n\n    if (refspec->fetch == REFSPEC_FETCH) {\n      /* something */\n    } else {\n      /* something else */\n    }\n\nwith a switch/case-statement, only to realize that 'refspec->fetch' is\nreally a Boolean in disguise.\n\nI am not overly attached to these patches one way or the other. I think\nthey do improve the refspec.h API, but they're also ripe for\nbike-shedding. So if we agree that they are good, I'm happy to see them\nmove forward. But if not, I'd rather not spend the list's time\nbike-shedding here, so I'd just as soon drop them.\n\nThanks in advance for your review!\n\nTaylor Blau (4):\n  refspec: treat 'fetch' as a Boolean value\n  refspec: replace `refspec_init()` with fetch/push variants\n  refspec: remove refspec_item_init_or_die()\n  refspec: replace `refspec_item_init()` with fetch/push variants\n\n builtin/fetch.c    |   2 +-\n builtin/pull.c     |   3 ++-\n git-diff-pairs     | Bin 0 -> 12166200 bytes\n refspec.c          |  38 +++++++++++++++++++++++++++-----------\n refspec.h          |  18 +++++++-----------\n remote.c           |   4 ++--\n transport-helper.c |   2 +-\n 7 files changed, 40 insertions(+), 27 deletions(-)\n create mode 100755 git-diff-pairs\n\n\nbase-commit: c702dd48567cfebca3d4a06b691de97da3f8dc4a\n-- \n2.49.0.rc2.13.g95783265fd\n"},{"id":"514450","messageId":"7e662acb5ac50b778917cbf2f9f791d35e95e31d.1742250259.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742250259.git.me@ttaylorr.com","subject":"[PATCH 1/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:24:24Z","receivedAt":"2025-03-17T22:24:37Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\nhave constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly\nsuggests that we might introduce other modes in the future.\n\nBut these values are treated as a Boolean, and stored in a struct field\ncalled 'fetch'. So the following:\n\n    if (refspec->fetch == REFSPEC_FETCH) { ... }\n\n, and\n\n    if (refspec->fetch) { ... }\n\nare equivalent. Let's avoid renaming the Boolean values \"true\" and\n\"false\" here and remove the two REFSPEC_ constants mentioned above.\n\nSince this value is truly a Boolean and will only ever take on a value\nof 0 or 1, we can declare it as a single bit unsigned field. In\npractice this won't shrink the size of 'struct refspec', but it more\nclearly indicates the intent.\n\nNote that this introduces some awkwardness like:\n\n    refspec_item_init_or_die(&spec, refspec, 1);\n\n, where it's unclear what the final \"1\" does. This will be addressed in\nthe following commits.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/pull.c     |   2 +-\n git-diff-pairs     | Bin 0 -> 12166200 bytes\n refspec.c          |   4 ++--\n refspec.h          |   9 +++------\n remote.c           |   4 ++--\n transport-helper.c |   2 +-\n 6 files changed, 9 insertions(+), 12 deletions(-)\n create mode 100755 git-diff-pairs\n\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 9c4a00620a..8bbfcce729 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\trefspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);\n+\trefspec_item_init_or_die(&spec, refspec, 1);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n \t\tspec_src = \"HEAD\";\ndiff --git a/git-diff-pairs b/git-diff-pairs\nnew file mode 100755\nindex 0000000000000000000000000000000000000000..8eebe3117848710e6c09590e6e5481111801d698\nGIT binary patch\nliteral 12166200\n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"},{"id":"514446","messageId":"fd2354dade380a6d0109398bdc422709966728dd.1742250259.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742250259.git.me@ttaylorr.com","subject":"[PATCH 2/4] refspec: replace `refspec_init()` with fetch/push variants","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:24:37Z","receivedAt":"2025-03-17T22:24:39Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"To avoid having a Boolean argument in the refspec_init() function,\nreplace it with two variants:\n\n  - `refspec_init_fetch()`\n  - `refspec_init_push()`\n\nto codify the meaning of that Boolean into the function's name itself.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n refspec.c          | 12 +++++++++---\n refspec.h          |  3 ++-\n remote.c           |  4 ++--\n transport-helper.c |  2 +-\n 4 files changed, 14 insertions(+), 7 deletions(-)\n\ndiff --git a/refspec.c b/refspec.c\nindex db5a1c34a5..f6be0c54d7 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -178,10 +178,16 @@ void refspec_item_clear(struct refspec_item *item)\n \titem->exact_sha1 = 0;\n }\n \n-void refspec_init(struct refspec *rs, int fetch)\n+void refspec_init_fetch(struct refspec *rs)\n {\n-\tmemset(rs, 0, sizeof(*rs));\n-\trs->fetch = fetch;\n+\tstruct refspec blank = REFSPEC_INIT_FETCH;\n+\tmemcpy(rs, &blank, sizeof(*rs));\n+}\n+\n+void refspec_init_push(struct refspec *rs)\n+{\n+\tstruct refspec blank = REFSPEC_INIT_PUSH;\n+\tmemcpy(rs, &blank, sizeof(*rs));\n }\n \n void refspec_append(struct refspec *rs, const char *refspec)\ndiff --git a/refspec.h b/refspec.h\nindex 155494cd3a..7db68e56c8 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -52,7 +52,8 @@ int refspec_item_init(struct refspec_item *item, const char *refspec,\n void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n \t\t\t      int fetch);\n void refspec_item_clear(struct refspec_item *item);\n-void refspec_init(struct refspec *rs, int fetch);\n+void refspec_init_fetch(struct refspec *rs);\n+void refspec_init_push(struct refspec *rs);\n void refspec_append(struct refspec *rs, const char *refspec);\n __attribute__((format (printf,2,3)))\n void refspec_appendf(struct refspec *rs, const char *fmt, ...);\ndiff --git a/remote.c b/remote.c\nindex addd4a9999..25af97a44b 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -143,8 +143,8 @@ static struct remote *make_remote(struct remote_state *remote_state,\n \tret->prune = -1;  /* unspecified */\n \tret->prune_tags = -1;  /* unspecified */\n \tret->name = xstrndup(name, len);\n-\trefspec_init(&ret->push, 0);\n-\trefspec_init(&ret->fetch, 1);\n+\trefspec_init_push(&ret->push);\n+\trefspec_init_fetch(&ret->fetch);\n \tstring_list_init_dup(&ret->server_options);\n \n \tALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,\ndiff --git a/transport-helper.c b/transport-helper.c\nindex 43cd760119..69391ee7d2 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -162,7 +162,7 @@ static struct child_process *get_helper(struct transport *transport)\n \n \tdata->helper = helper;\n \tdata->no_disconnect_req = 0;\n-\trefspec_init(&data->rs, 1);\n+\trefspec_init_fetch(&data->rs);\n \n \t/*\n \t * Open the output as FILE* so strbuf_getline_*() family of\n-- \n2.49.0.rc2.13.g95783265fd\n\n"},{"id":"514447","messageId":"49b470de61ed73095d04a9f26a7c0e5aa76bf0c4.1742250259.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742250259.git.me@ttaylorr.com","subject":"[PATCH 3/4] refspec: remove refspec_item_init_or_die()","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:24:40Z","receivedAt":"2025-03-17T22:24:42Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"There are two callers of this function, which ensures that a dispatched\ncall to refspec_item_init() does not fail.\n\nIn the following commit, we're going to add fetch/push-specific variants\nof refspec_item_init(), which will turn one function into two. To avoid\nintroducing yet another pair of new functions (such as\nrefspec_item_init_push_or_die() and refspec_item_init_fetch_or_die()),\nlet's remove the thin wrapper entirely.\n\nThis duplicates a single line of code among two callers, but thins the\nrefspec.h API by one function, and prevents introducing two more in the\nfollowing commit.\n\nNote that we still have a trailing Boolean argument in the function\n`refspec_item_init()`. The following commit will address this.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/pull.c |  3 ++-\n refspec.c      | 10 ++--------\n refspec.h      |  2 --\n 3 files changed, 4 insertions(+), 11 deletions(-)\n\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 8bbfcce729..a68a9955de 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,8 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\trefspec_item_init_or_die(&spec, refspec, 1);\n+\tif (!refspec_item_init(&spec, refspec, 1))\n+\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n \t\tspec_src = \"HEAD\";\ndiff --git a/refspec.c b/refspec.c\nindex f6be0c54d7..3aeb697505 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -160,13 +160,6 @@ int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)\n \treturn parse_refspec(item, refspec, fetch);\n }\n \n-void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n-\t\t\t      int fetch)\n-{\n-\tif (!refspec_item_init(item, refspec, fetch))\n-\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n-}\n-\n void refspec_item_clear(struct refspec_item *item)\n {\n \tFREE_AND_NULL(item->src);\n@@ -194,7 +187,8 @@ void refspec_append(struct refspec *rs, const char *refspec)\n {\n \tstruct refspec_item item;\n \n-\trefspec_item_init_or_die(&item, refspec, rs->fetch);\n+\tif (!refspec_item_init(&item, refspec, rs->fetch))\n+\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \n \tALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);\n \trs->items[rs->nr] = item;\ndiff --git a/refspec.h b/refspec.h\nindex 7db68e56c8..614f34554e 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -49,8 +49,6 @@ struct refspec {\n \n int refspec_item_init(struct refspec_item *item, const char *refspec,\n \t\t      int fetch);\n-void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n-\t\t\t      int fetch);\n void refspec_item_clear(struct refspec_item *item);\n void refspec_init_fetch(struct refspec *rs);\n void refspec_init_push(struct refspec *rs);\n-- \n2.49.0.rc2.13.g95783265fd\n\n"},{"id":"514448","messageId":"95783265fdfaf09f39bf3a02b4b2877d3cd88cb7.1742250259.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742250259.git.me@ttaylorr.com","subject":"[PATCH 4/4] refspec: replace `refspec_item_init()` with fetch/push variants","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-17T22:24:43Z","receivedAt":"2025-03-17T22:24:46Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"For similar reasons as in the previous refactoring of `refspec_init()`\ninto `refspec_init_fetch()` and `refspec_init_push()`, apply the same\nrefactoring to `refspec_item_init()`.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/fetch.c |  2 +-\n builtin/pull.c  |  2 +-\n refspec.c       | 22 +++++++++++++++++++---\n refspec.h       |  4 ++--\n 4 files changed, 23 insertions(+), 7 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 02af505469..9830c09011 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -586,7 +586,7 @@ static struct ref *get_ref_map(struct remote *remote,\n \t\tstruct refspec_item tag_refspec;\n \n \t\t/* also fetch all tags */\n-\t\trefspec_item_init(&tag_refspec, TAG_REFSPEC, 0);\n+\t\trefspec_item_init_push(&tag_refspec, TAG_REFSPEC);\n \t\tget_fetch_map(remote_refs, &tag_refspec, &tail, 0);\n \t\trefspec_item_clear(&tag_refspec);\n \t} else if (tags == TAGS_DEFAULT && *autotags) {\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex a68a9955de..a1ebc6ad33 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\tif (!refspec_item_init(&spec, refspec, 1))\n+\tif (!refspec_item_init_fetch(&spec, refspec))\n \t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\ndiff --git a/refspec.c b/refspec.c\nindex 3aeb697505..0775358d96 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -153,13 +153,24 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet\n \treturn 1;\n }\n \n-int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)\n+static int refspec_item_init(struct refspec_item *item, const char *refspec,\n+\t\t\t     int fetch)\n {\n \tmemset(item, 0, sizeof(*item));\n \titem->raw = xstrdup(refspec);\n \treturn parse_refspec(item, refspec, fetch);\n }\n \n+int refspec_item_init_fetch(struct refspec_item *item, const char *refspec)\n+{\n+\treturn refspec_item_init(item, refspec, 1);\n+}\n+\n+int refspec_item_init_push(struct refspec_item *item, const char *refspec)\n+{\n+\treturn refspec_item_init(item, refspec, 0);\n+}\n+\n void refspec_item_clear(struct refspec_item *item)\n {\n \tFREE_AND_NULL(item->src);\n@@ -186,8 +197,13 @@ void refspec_init_push(struct refspec *rs)\n void refspec_append(struct refspec *rs, const char *refspec)\n {\n \tstruct refspec_item item;\n+\tint ret;\n \n-\tif (!refspec_item_init(&item, refspec, rs->fetch))\n+\tif (rs->fetch)\n+\t\tret = refspec_item_init_fetch(&item, refspec);\n+\telse\n+\t\tret = refspec_item_init_push(&item, refspec);\n+\tif (!ret)\n \t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \n \tALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);\n@@ -233,7 +249,7 @@ void refspec_clear(struct refspec *rs)\n int valid_fetch_refspec(const char *fetch_refspec_str)\n {\n \tstruct refspec_item refspec;\n-\tint ret = refspec_item_init(&refspec, fetch_refspec_str, 1);\n+\tint ret = refspec_item_init_fetch(&refspec, fetch_refspec_str);\n \trefspec_item_clear(&refspec);\n \treturn ret;\n }\ndiff --git a/refspec.h b/refspec.h\nindex 614f34554e..8b04f9995e 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -47,8 +47,8 @@ struct refspec {\n \tunsigned fetch : 1;\n };\n \n-int refspec_item_init(struct refspec_item *item, const char *refspec,\n-\t\t      int fetch);\n+int refspec_item_init_fetch(struct refspec_item *item, const char *refspec);\n+int refspec_item_init_push(struct refspec_item *item, const char *refspec);\n void refspec_item_clear(struct refspec_item *item);\n void refspec_init_fetch(struct refspec *rs);\n void refspec_init_push(struct refspec *rs);\n-- \n2.49.0.rc2.13.g95783265fd\n"},{"id":"514467","messageId":"xmqqplif5jfw.fsf@gitster.g","threadId":"62871","inReplyTo":"Z9ibhJxjlc2DxKdX@nand.local","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-17T23:25:07Z","receivedAt":"2025-03-17T23:25:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Taylor Blau <me@ttaylorr.com> writes:\n\n> OK... I agree that these are at least named confusingly ;-). We could do\n> something like:\n\n\"Type\" is so overly generic a word that it is only marginally better\nthan .fetch that is not a Boolean.  And in a sense it is worse.  At\nleast .fetch hints us that it wants to choose between fetch and\nsomething else, most likely push, but .type does not tell us what\nkind of type it is about.\n\nDo we anticipate that we would acquire a new \"type\" other than FETCH\nand PUSH?  If not, .fetch = yes/no might be a better choice and if\nthe meaning of the member is so obvious, we may even be able to lose\nREFSPEC_{FETCH,PUSH} symbols for its value.\n\nOn the other hand, if we were to add new kind of refspec used when\ndoing something other than fetch and push (perhaps when bundling?  I\ndunno), then the member specifies how the transfer goes, perhaps, so\n.transfer = REFSPEC_{FETCH,PUSH,BUNDLE} might be a better choice.\nBut the refspecs are per remote thing (whether the remote is\nconfigured or the refspec is used as a one-shot basis fetching from\nor pushing to a remote) and while you can fetch from a bundle, you\ncannot push to it, and even if the system is updated to allow\npushing into a bundle (which I do not think is such a bad idea), the\nrefspec used in such a case would still be either fetch refspec or\npush refspec, so perhaps a new, third kind of refspec would not fit\nwell within the design after all.\n\nSo, if we can reasonably expect that the choice will stay between\nfetch and push and we wouldn't be adding a new kind, I think\nreverting the meaning of .fetch to yes/no and getting rid of\nREFSPEC_{FETCH,PUSH} may be a better approach.  If we stil want to\nkeep the descriptive CPP macro, then perhaps .transfer (or\n.direction) that lets us choose between fetch or push?  I dunno.\n\n> , which gives us the \"default\" case in the switch statement. But this\n> really is a boolean. I wonder if we should just use 0/1 constants and\n> leave the field name alone. That would turn something like:\n>\n>     if (rs->fetch == REFSPEC_FETCH) { ... }\n>\n> into:\n>\n>     if (rs->fetch) { ... }\n>\n> , which I think is cleaner. There's no reason to rename true/false to\n> FETCH and PUSH if the field name itself is already 'fetch'.\n\nYup, that makes two of us.\n"},{"id":"514468","messageId":"xmqqldt35jdn.fsf@gitster.g","threadId":"62871","inReplyTo":"cover.1742250259.git.me@ttaylorr.com","subject":"Re: [PATCH 0/4] refspec: treat 'fetch' as a Boolean value","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-17T23:26:28Z","receivedAt":"2025-03-17T23:26:30Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Taylor Blau <me@ttaylorr.com> writes:\n\n> This series explores treating the 'fetch' field of 'struct refspec' as a\n> Boolean, instead of taking on values called \"REFSPEC_FETCH\" and\n> \"REFSPEC_PUSH\".\n>\n> The refactoring takes place in a couple of steps, but IMHO the end\n> result is pleasing and an improvement in clarity over the existing API.\n>\n> For reference, in one of the patches above, I had suggested replacing\n> something like:\n>\n>     if (refspec->fetch == REFSPEC_FETCH) {\n>       /* something */\n>     } else {\n>       /* something else */\n>     }\n>\n> with a switch/case-statement, only to realize that 'refspec->fetch' is\n> really a Boolean in disguise.\n>\n> I am not overly attached to these patches one way or the other. I think\n> they do improve the refspec.h API, but they're also ripe for\n> bike-shedding. So if we agree that they are good, I'm happy to see them\n> move forward. But if not, I'd rather not spend the list's time\n> bike-shedding here, so I'd just as soon drop them.\n>\n> Thanks in advance for your review!\n>\n> Taylor Blau (4):\n>   refspec: treat 'fetch' as a Boolean value\n>   refspec: replace `refspec_init()` with fetch/push variants\n>   refspec: remove refspec_item_init_or_die()\n>   refspec: replace `refspec_item_init()` with fetch/push variants\n>\n>  builtin/fetch.c    |   2 +-\n>  builtin/pull.c     |   3 ++-\n>  git-diff-pairs     | Bin 0 -> 12166200 bytes\n>  refspec.c          |  38 +++++++++++++++++++++++++++-----------\n>  refspec.h          |  18 +++++++-----------\n>  remote.c           |   4 ++--\n>  transport-helper.c |   2 +-\n>  7 files changed, 40 insertions(+), 27 deletions(-)\n>  create mode 100755 git-diff-pairs\n\nSomebody does not proofread their cover letter.  Sheesh ;-)\n"},{"id":"514475","messageId":"20250318002436.GC1470172@coredump.intra.peff.net","threadId":"62871","inReplyTo":"7e662acb5ac50b778917cbf2f9f791d35e95e31d.1742250259.git.me@ttaylorr.com","subject":"Re: [PATCH 1/4] refspec: treat 'fetch' as a Boolean value","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-18T00:24:36Z","receivedAt":"2025-03-18T00:24:37Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Mar 17, 2025 at 06:24:24PM -0400, Taylor Blau wrote:\n\n> Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\n> have constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly\n> suggests that we might introduce other modes in the future.\n\nI don't know that I'd call it misleading. We _could_ introduce new modes\nif we had new operations. But I do agree it's unlikely (even if we had\nother operations like git-archive, cat-file, etc, they would probably\nnot have refspecs).\n\nSo it seems like a reasonable direction to me.\n\nThe one thing I don't like is:\n\n> diff --git a/builtin/pull.c b/builtin/pull.c\n> index 9c4a00620a..8bbfcce729 100644\n> --- a/builtin/pull.c\n> +++ b/builtin/pull.c\n> @@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n>  \tconst char *spec_src;\n>  \tconst char *merge_branch;\n>  \n> -\trefspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);\n> +\trefspec_item_init_or_die(&spec, refspec, 1);\n\nThe third argument here (and elsewhere) becomes much more mysterious to\nthe reader.  Maybe not a big deal, though.\n\n> diff --git a/git-diff-pairs b/git-diff-pairs\n\nHmm.... :)\n\n-Peff\n"},{"id":"514476","messageId":"20250318002616.GA1470685@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250318002436.GC1470172@coredump.intra.peff.net","subject":"Re: [PATCH 1/4] refspec: treat 'fetch' as a Boolean value","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-18T00:26:16Z","receivedAt":"2025-03-18T00:26:18Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Mar 17, 2025 at 08:24:36PM -0400, Jeff King wrote:\n\n> > -\trefspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);\n> > +\trefspec_item_init_or_die(&spec, refspec, 1);\n> \n> The third argument here (and elsewhere) becomes much more mysterious to\n> the reader.  Maybe not a big deal, though.\n\nOh, I should have read the other patches. :)\n\nThe end result resolves my complaint nicely.\n\n-Peff\n"},{"id":"514497","messageId":"20250318053905.GA2051217@coredump.intra.peff.net","threadId":"62871","inReplyTo":"xmqq1puva3cu.fsf@gitster.g","subject":"[PATCH 0/2] limiting followRemoteHEAD being used","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-18T05:39:05Z","receivedAt":"2025-03-18T05:39:07Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Mon, Mar 17, 2025 at 12:01:21PM -0700, Junio C Hamano wrote:\n\n> > So I could see going in two different directions:\n> >\n> >   1. Only do the HEAD update when we are using the configured refspecs.\n> >\n> >   2. Do the HEAD update even when we are not fetching its destination,\n> >      but do not otherwise trigger ls-refs to discover it (so basically,\n> >      not on object-only fetches). This kicks in for more cases, but is\n> >      hard to explain.\n> >\n> > Both are a user-visible divergence from how the feature behaves now (and\n> > so I did not want to touch that in my series), but if we are all in\n> > agreement, we can fix it on top. I do think option 1 (i.e., what you are\n> > suggesting in your email) is how I would have done it if starting from\n> > scratch. And the current rules are weird enough and the feature is new\n> > enough that I think it is OK to change.\n> \n> Yup, I do think #1 is the way to go.\n\nIt turned out to be pretty easy to do; the code ends up even shorter.\nThese patches apply on top of jk/fetch-ref-prefix-cleanup.\n\nThere is one interesting case we haven't discussed. What should:\n\n  git fetch origin HEAD\n\ndo with respect to refs/remotes/origin/HEAD? Right now it does nothing\n(at least with the v2 protocol). We ask about HEAD, but since we didn't\nfetch the matching ref, set_head() won't accept it. And after my\npatches, we would not even try to call set_head() at all (since we are\nnot using the full refspecs).\n\nBut it's also something I could see somebody doing to try to update\nrefs/remotes/origin/HEAD. I've left it alone for now, since my series\ndoes not change the behavior either way. But it might be something we\ncould do on top (though it gets funny, because with the code as it is\nnow, we'd have to ask for all of refs/heads/ to see the pointed-to\nbranch advertised).\n\nAnyway, here's what I think we should do now. The first one is the\nchange we discussed, and the second is a related optimization I noticed.\n\n  [1/2]: fetch: only respect followRemoteHEAD with configured refspecs\n  [2/2]: fetch: don't ask for remote HEAD if followRemoteHEAD is \"never\"\n\n Documentation/config/remote.adoc |  3 ++-\n builtin/fetch.c                  | 29 +++++++----------------------\n t/t5505-remote.sh                |  2 +-\n t/t5510-fetch.sh                 | 19 ++++++++++++++++++-\n 4 files changed, 28 insertions(+), 25 deletions(-)\n\n"},{"id":"514498","messageId":"20250318054017.GA2051617@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250318053905.GA2051217@coredump.intra.peff.net","subject":"[PATCH 1/2] fetch: only respect followRemoteHEAD with configured refspecs","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-18T05:40:17Z","receivedAt":"2025-03-18T05:40:18Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"The new followRemoteHEAD feature is triggered for almost every fetch,\ncausing us to ask the server about the remote \"HEAD\" and to consider\nupdating our local tracking HEAD symref. This patch limits the feature\nonly to the case when we are fetching a remote using its configured\nrefspecs (typically into its refs/remotes/ hierarchy). There are two\nreasons for this.\n\nOne is efficiency. E.g., the fixes in 6c915c3f85 (fetch: do not ask for\nHEAD unnecessarily, 2024-12-06) and 20010b8c20 (fetch: avoid ls-refs\nonly to ask for HEAD symref update, 2025-03-08) were aimed at reducing\nthe work we do when we would not be able to update HEAD anyway. But they\ndo not quite cover all cases. The remaining one is:\n\n  git fetch origin refs/heads/foo:refs/remotes/origin/foo\n\nwhich _sometimes_ can update HEAD, but usually not. And that leads us to\nthe second point, which is being simple and explainable.\n\nThe code for updating the tracking HEAD symref requires both that we\nlearned which ref the remote HEAD points at, and that the server\nadvertised that ref to us. But because the v2 protocol narrows the\nserver's advertisement, the command above would not typically update\nHEAD at all, unless it happened to point to the \"foo\" branch. Or even\nweirder, it probably _would_ update if the server is very old and\nsupports only the v0 protocol, which always gives a full advertisement.\n\nThis creates confusing behavior for the user: sometimes we may try to\nupdate HEAD and sometimes not, depending on vague rules.\n\nOne option here would be to loosen the update code to accept the remote\nHEAD even if the server did not advertise that ref. I think that could\nwork, but it may also lead to interesting corner cases (e.g., creating a\ndangling symref locally, even though the branch is not unborn on the\nserver, if we happen not to have fetched it).\n\nSo let's instead simplify the rules: we'll only consider updating the\ntracking HEAD symref when we're doing a full fetch of the remote's\nconfigured refs. This is easy to implement; we can just set a flag at\nthe moment we realize we're using the configured refspecs.  And we can\ndrop the special case code added by 6c915c3f85 and 20010b8c20, since\nthis covers those cases. The existing tests from those commits still\npass.\n\nIn t5505, an incidental call to \"git fetch <remote> <refspec>\" updated\nHEAD, which caused us to adjust the test in 3f763ddf28 (fetch: set\nremote/HEAD if it does not exist, 2024-11-22). We can now adjust that\nback to how it was before the feature was added.\n\nEven though t5505 is incidentally testing our new desired behavior,\nwe'll add an explicit test in t5510 to make sure it is covered.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\nThe test is weird with the way it calls \"cd\", but it matches the nearby\nones. I think that could all be simplified, but I'll leave that for\nanother day (or never).\n\n Documentation/config/remote.adoc |  3 ++-\n builtin/fetch.c                  | 25 ++++++-------------------\n t/t5505-remote.sh                |  2 +-\n t/t5510-fetch.sh                 | 14 ++++++++++++++\n 4 files changed, 23 insertions(+), 21 deletions(-)\n\ndiff --git a/Documentation/config/remote.adoc b/Documentation/config/remote.adoc\nindex 25fe219d10..91e46f66f5 100644\n--- a/Documentation/config/remote.adoc\n+++ b/Documentation/config/remote.adoc\n@@ -108,7 +108,8 @@ the values inherited from a lower priority configuration files (e.g.\n `$HOME/.gitconfig`).\n \n remote.<name>.followRemoteHEAD::\n-\tHow linkgit:git-fetch[1] should handle updates to `remotes/<name>/HEAD`.\n+\tHow linkgit:git-fetch[1] should handle updates to `remotes/<name>/HEAD`\n+\twhen fetching using the configured refspecs of a remote.\n \tThe default value is \"create\", which will create `remotes/<name>/HEAD`\n \tif it exists on the remote, but not locally; this will not touch an\n \talready existing local reference. Setting it to \"warn\" will print\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 02af505469..66f5ae31b6 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1691,21 +1691,6 @@ static int set_head(const struct ref *remote_refs, struct remote *remote)\n \treturn result;\n }\n \n-static int uses_remote_tracking(struct transport *transport, struct refspec *rs)\n-{\n-\tif (!remote_is_configured(transport->remote, 0))\n-\t\treturn 0;\n-\n-\tif (!rs->nr)\n-\t\trs = &transport->remote->fetch;\n-\n-\tfor (int i = 0; i < rs->nr; i++)\n-\t\tif (rs->items[i].dst)\n-\t\t\treturn 1;\n-\n-\treturn 0;\n-}\n-\n static int do_fetch(struct transport *transport,\n \t\t    struct refspec *rs,\n \t\t    const struct fetch_config *config)\n@@ -1720,6 +1705,7 @@ static int do_fetch(struct transport *transport,\n \t\tTRANSPORT_LS_REFS_OPTIONS_INIT;\n \tstruct fetch_head fetch_head = { 0 };\n \tstruct strbuf err = STRBUF_INIT;\n+\tint do_set_head = 0;\n \n \tif (tags == TAGS_DEFAULT) {\n \t\tif (transport->remote->fetch_tags == 2)\n@@ -1740,9 +1726,11 @@ static int do_fetch(struct transport *transport,\n \t} else {\n \t\tstruct branch *branch = branch_get(NULL);\n \n-\t\tif (transport->remote->fetch.nr)\n+\t\tif (transport->remote->fetch.nr) {\n \t\t\trefspec_ref_prefixes(&transport->remote->fetch,\n \t\t\t\t\t     &transport_ls_refs_options.ref_prefixes);\n+\t\t\tdo_set_head = 1;\n+\t\t}\n \t\tif (branch_has_merge_config(branch) &&\n \t\t    !strcmp(branch->remote_name, transport->remote->name)) {\n \t\t\tint i;\n@@ -1765,8 +1753,7 @@ static int do_fetch(struct transport *transport,\n \t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n \t\t\t    \"refs/tags/\");\n \n-\tif (transport_ls_refs_options.ref_prefixes.nr &&\n-\t    uses_remote_tracking(transport, rs))\n+\tif (do_set_head)\n \t\tstrvec_push(&transport_ls_refs_options.ref_prefixes,\n \t\t\t    \"HEAD\");\n \n@@ -1918,7 +1905,7 @@ static int do_fetch(struct transport *transport,\n \t\t\t\t  \"you need to specify exactly one branch with the --set-upstream option\"));\n \t\t}\n \t}\n-\tif (set_head(remote_refs, transport->remote))\n+\tif (do_set_head && set_head(remote_refs, transport->remote))\n \t\t;\n \t\t/*\n \t\t * Way too many cases where this can go wrong\ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex bb7e0c6879..fed5823e85 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -499,7 +499,7 @@ test_expect_success 'set-head --auto has no problem w/multiple HEADs' '\n \t\tcd test &&\n \t\tgit fetch two \"refs/heads/*:refs/remotes/two/*\" &&\n \t\tgit remote set-head --auto two >output 2>&1 &&\n-\t\techo \"${SQ}two/HEAD${SQ} is unchanged and points to ${SQ}main${SQ}\" >expect &&\n+\t\techo \"${SQ}two/HEAD${SQ} is now created and points to ${SQ}main${SQ}\" >expect &&\n \t\ttest_cmp expect output\n \t)\n '\ndiff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh\nindex 5f350facf5..ad23dd11ef 100755\n--- a/t/t5510-fetch.sh\n+++ b/t/t5510-fetch.sh\n@@ -250,6 +250,20 @@ test_expect_success \"fetch test followRemoteHEAD always\" '\n \t)\n '\n \n+test_expect_success 'followRemoteHEAD does not kick in with refspecs' '\n+\ttest_when_finished \"git config unset remote.origin.followRemoteHEAD\" &&\n+\t(\n+\t\tcd \"$D\" &&\n+\t\tcd two &&\n+\t\tgit remote set-head origin other &&\n+\t\tgit config set remote.origin.followRemoteHEAD always &&\n+\t\tgit fetch origin refs/heads/main:refs/remotes/origin/main &&\n+\t\techo refs/remotes/origin/other >expect &&\n+\t\tgit symbolic-ref refs/remotes/origin/HEAD >actual &&\n+\t\ttest_cmp expect actual\n+\t)\n+'\n+\n test_expect_success 'fetch --prune on its own works as expected' '\n \tcd \"$D\" &&\n \tgit clone . prune &&\n-- \n2.49.0.390.gc9996a6a6c\n\n"},{"id":"514499","messageId":"20250318054122.GB2051617@coredump.intra.peff.net","threadId":"62871","inReplyTo":"20250318053905.GA2051217@coredump.intra.peff.net","subject":"[PATCH 2/2] fetch: don't ask for remote HEAD if followRemoteHEAD is \"never\"","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2025-03-18T05:41:22Z","receivedAt":"2025-03-18T05:41:23Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"When we are going to consider updating the refs/remotes/*/HEAD symref,\nwe have to ask the remote side where its HEAD points. But if we know\nthat the feature is disabled by config, we don't need to bother!\n\nThis saves a little bit of work and network communication for the\nserver. And even a little bit of effort on the client, as our local\nset_head() function did a bit of work matching the remote HEAD before\nrealizing that we're not going to do anything with it.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\nI guess we could leave the check inside set_head() in case somebody else\never called it without checking the value of follow_remote_head. But\nit's a static function that is called once, so I'd rather not keep the\ndead code around.\n\n builtin/fetch.c  | 6 ++----\n t/t5510-fetch.sh | 5 ++++-\n 2 files changed, 6 insertions(+), 5 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 66f5ae31b6..3658509740 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -1643,9 +1643,6 @@ static int set_head(const struct ref *remote_refs, struct remote *remote)\n \t\tstring_list_append(&heads, strip_refshead(ref->name));\n \t}\n \n-\tif (follow_remote_head == FOLLOW_REMOTE_NEVER)\n-\t\tgoto cleanup;\n-\n \tif (!heads.nr)\n \t\tresult = 1;\n \telse if (heads.nr > 1)\n@@ -1729,7 +1726,8 @@ static int do_fetch(struct transport *transport,\n \t\tif (transport->remote->fetch.nr) {\n \t\t\trefspec_ref_prefixes(&transport->remote->fetch,\n \t\t\t\t\t     &transport_ls_refs_options.ref_prefixes);\n-\t\t\tdo_set_head = 1;\n+\t\t\tif (transport->remote->follow_remote_head != FOLLOW_REMOTE_NEVER)\n+\t\t\t\tdo_set_head = 1;\n \t\t}\n \t\tif (branch_has_merge_config(branch) &&\n \t\t    !strcmp(branch->remote_name, transport->remote->name)) {\ndiff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh\nindex ad23dd11ef..5f0eb5684e 100755\n--- a/t/t5510-fetch.sh\n+++ b/t/t5510-fetch.sh\n@@ -119,7 +119,10 @@ test_expect_success \"fetch test followRemoteHEAD never\" '\n \t\tcd two &&\n \t\tgit update-ref --no-deref -d refs/remotes/origin/HEAD &&\n \t\tgit config set remote.origin.followRemoteHEAD \"never\" &&\n-\t\tgit fetch &&\n+\t\tGIT_TRACE_PACKET=$PWD/trace.out git fetch &&\n+\t\t# Confirm that we do not even ask for HEAD when we are\n+\t\t# not going to act on it.\n+\t\ttest_grep ! \"ref-prefix HEAD\" trace.out &&\n \t\ttest_must_fail git rev-parse --verify refs/remotes/origin/HEAD\n \t)\n '\n-- \n2.49.0.390.gc9996a6a6c\n"},{"id":"514547","messageId":"xmqqmsdi2lm6.fsf@gitster.g","threadId":"62871","inReplyTo":"20250318053905.GA2051217@coredump.intra.peff.net","subject":"Re: [PATCH 0/2] limiting followRemoteHEAD being used","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-03-18T19:18:41Z","receivedAt":"2025-03-18T19:18:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> There is one interesting case we haven't discussed. What should:\n>\n>   git fetch origin HEAD\n>\n> do with respect to refs/remotes/origin/HEAD? Right now it does nothing\n> (at least with the v2 protocol). We ask about HEAD, but since we didn't\n> fetch the matching ref, set_head() won't accept it. And after my\n> patches, we would not even try to call set_head() at all (since we are\n> not using the full refspecs).\n>\n> But it's also something I could see somebody doing to try to update\n> refs/remotes/origin/HEAD. I've left it alone for now, since my series\n> does not change the behavior either way. But it might be something we\n> could do on top (though it gets funny, because with the code as it is\n> now, we'd have to ask for all of refs/heads/ to see the pointed-to\n> branch advertised).\n\nWith v2 protocol, we have direct knowledge of where their HEAD\npoints at (when we ask for it), so we shouldn't even have to know\nabout what they have under \"refs/heads/\".  I do not think it is\nwithin our contract that we'd somehow make sure that HEAD in a\nremote-tracking hierarchy is not dangling, or something.\n\nIn any case, I agree that it is sensible to leave it out of these\nchanges for now.\n\nThanks.\n"},{"id":"514566","messageId":"Z9n2Qa1KJ5obtvPu@nand.local","threadId":"62871","inReplyTo":"xmqqldt35jdn.fsf@gitster.g","subject":"Re: [PATCH 0/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:40:01Z","receivedAt":"2025-03-18T22:40:03Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Mon, Mar 17, 2025 at 04:26:28PM -0700, Junio C Hamano wrote:\n> >  builtin/fetch.c    |   2 +-\n> >  builtin/pull.c     |   3 ++-\n> >  git-diff-pairs     | Bin 0 -> 12166200 bytes\n> >  refspec.c          |  38 +++++++++++++++++++++++++++-----------\n> >  refspec.h          |  18 +++++++-----------\n> >  remote.c           |   4 ++--\n> >  transport-helper.c |   2 +-\n> >  7 files changed, 40 insertions(+), 27 deletions(-)\n> >  create mode 100755 git-diff-pairs\n>\n> Somebody does not proofread their cover letter.  Sheesh ;-)\n\nUgh, for goodness sake. Sorry about that, I'll send another round.\n\nThanks,\nTaylor\n"},{"id":"514567","messageId":"Z9n3QGmNYsp3QJoJ@nand.local","threadId":"62871","inReplyTo":"20250318002436.GC1470172@coredump.intra.peff.net","subject":"Re: [PATCH 1/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:44:16Z","receivedAt":"2025-03-18T22:44:18Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Mon, Mar 17, 2025 at 08:24:36PM -0400, Jeff King wrote:\n> On Mon, Mar 17, 2025 at 06:24:24PM -0400, Taylor Blau wrote:\n>\n> > Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\n> > have constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly\n> > suggests that we might introduce other modes in the future.\n>\n> I don't know that I'd call it misleading. We _could_ introduce new modes\n> if we had new operations. But I do agree it's unlikely (even if we had\n> other operations like git-archive, cat-file, etc, they would probably\n> not have refspecs).\n>\n> So it seems like a reasonable direction to me.\n\nFair, I think a more accurate statement might be to swap \"misleadingly\"\nfor \"confusingly\". I'll swap that and amend the paragraph to say \"[...],\nwhich is possible, but highly unlikely\"\n\n> The one thing I don't like is:\n>\n> > diff --git a/builtin/pull.c b/builtin/pull.c\n> > index 9c4a00620a..8bbfcce729 100644\n> > --- a/builtin/pull.c\n> > +++ b/builtin/pull.c\n> > @@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n> >  \tconst char *spec_src;\n> >  \tconst char *merge_branch;\n> >\n> > -\trefspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);\n> > +\trefspec_item_init_or_die(&spec, refspec, 1);\n>\n> The third argument here (and elsewhere) becomes much more mysterious to\n> the reader.  Maybe not a big deal, though.\n\nHmm. I see later on in the thread that the final patch resolves this\nawkwardness. I figured that readers might have a similar thought here,\nwhich is why I included \"Note that this introduces some awkwardness like\n[...]\", so perhaps there is a way to clarify that. But...\n\n> > diff --git a/git-diff-pairs b/git-diff-pairs\n>\n> Hmm.... :)\n\n...I could forgive you for not noticing given this ugliness ;-).\n\nThanks,\nTaylor\n"},{"id":"514568","messageId":"Z9n3/vLYNALHnbSN@nand.local","threadId":"62871","inReplyTo":"xmqqplif5jfw.fsf@gitster.g","subject":"Re: [PATCH 5/9] refspec_ref_prefixes(): clean up refspec_item logic","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:47:26Z","receivedAt":"2025-03-18T22:47:29Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Mon, Mar 17, 2025 at 04:25:07PM -0700, Junio C Hamano wrote:\n> So, if we can reasonably expect that the choice will stay between\n> fetch and push and we wouldn't be adding a new kind, I think\n> reverting the meaning of .fetch to yes/no and getting rid of\n> REFSPEC_{FETCH,PUSH} may be a better approach.  If we stil want to\n> keep the descriptive CPP macro, then perhaps .transfer (or\n> .direction) that lets us choose between fetch or push?  I dunno.\n\nI suppose adding a new direction/mode/transfer/etc is always possible.\nBut I think that it's unlikely enough to happen any time soon (if at\nall) in my view that we should simplify the code anyway. If that changes\nin the future *and* those changes fit will in the design of\nREFSPEC_FETCH and friends, then we can always resurrect those macros and\nreinterpret this field.\n\nBut I don't think that we should carry this extra baggage around in the\nmeantime if we don't need to.\n\n> > , which gives us the \"default\" case in the switch statement. But this\n> > really is a boolean. I wonder if we should just use 0/1 constants and\n> > leave the field name alone. That would turn something like:\n> >\n> >     if (rs->fetch == REFSPEC_FETCH) { ... }\n> >\n> > into:\n> >\n> >     if (rs->fetch) { ... }\n> >\n> > , which I think is cleaner. There's no reason to rename true/false to\n> > FETCH and PUSH if the field name itself is already 'fetch'.\n>\n> Yup, that makes two of us.\n\nGood :-). I'll send a small reroll of the topic anyway to avoid sending\na patch that has a git-diff-pairs binary in it :-<.\n\nThanks,\nTaylor\n"},{"id":"514569","messageId":"cover.1742338207.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"xmqq5xkdrrhs.fsf@gitster.g","subject":"[PATCH v2 0/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:50:13Z","receivedAt":"2025-03-18T22:50:16Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Here's a small reroll that cleans up some wording in the first patch,\nand drops the accidental inclusion of a stray 'git-diff-pairs' binary\nthat was sitting in my working tree at the time of writing the initial\ncommit.\n\nOtherwise the series is unchanged, but a range-diff is attached\nnonetheless. Thanks for reviewing :-).\n\nTaylor Blau (4):\n  refspec: treat 'fetch' as a Boolean value\n  refspec: replace `refspec_init()` with fetch/push variants\n  refspec: remove refspec_item_init_or_die()\n  refspec: replace `refspec_item_init()` with fetch/push variants\n\n builtin/fetch.c    |  2 +-\n builtin/pull.c     |  3 ++-\n refspec.c          | 38 +++++++++++++++++++++++++++-----------\n refspec.h          | 18 +++++++-----------\n remote.c           |  4 ++--\n transport-helper.c |  2 +-\n 6 files changed, 40 insertions(+), 27 deletions(-)\n\nRange-diff against v1:\n1:  7e662acb5a ! 1:  04e1ab8209 refspec: treat 'fetch' as a Boolean value\n    @@ Commit message\n         refspec: treat 'fetch' as a Boolean value\n     \n         Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\n    -    have constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly\n    -    suggests that we might introduce other modes in the future.\n    +    have macros called REFSPEC_FETCH and REFSPEC_PUSH. This confusingly\n    +    suggests that we might introduce other modes in the future, which, while\n    +    possible, is highly unlikely.\n     \n         But these values are treated as a Boolean, and stored in a struct field\n         called 'fetch'. So the following:\n    @@ Commit message\n             if (refspec->fetch) { ... }\n     \n         are equivalent. Let's avoid renaming the Boolean values \"true\" and\n    -    \"false\" here and remove the two REFSPEC_ constants mentioned above.\n    +    \"false\" here and remove the two REFSPEC_ macros mentioned above.\n     \n         Since this value is truly a Boolean and will only ever take on a value\n         of 0 or 1, we can declare it as a single bit unsigned field. In\n    @@ builtin/pull.c: static const char *get_tracking_branch(const char *remote, const\n      \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n      \t\tspec_src = \"HEAD\";\n     \n    - ## git-diff-pairs (new) ##\n    - Binary files /dev/null and git-diff-pairs differ\n    -\n      ## refspec.c ##\n     @@ refspec.c: void refspec_clear(struct refspec *rs)\n      int valid_fetch_refspec(const char *fetch_refspec_str)\n2:  fd2354dade = 2:  c3021b82ce refspec: replace `refspec_init()` with fetch/push variants\n3:  49b470de61 = 3:  88f6a91c46 refspec: remove refspec_item_init_or_die()\n4:  95783265fd = 4:  f0c323988f refspec: replace `refspec_item_init()` with fetch/push variants\n\nbase-commit: c702dd48567cfebca3d4a06b691de97da3f8dc4a\n-- \n2.49.0.3.gbb7a4a684c.dirty\n"},{"id":"514570","messageId":"04e1ab8209681f9090ff880fb4e0b452ff0d747a.1742338207.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742338207.git.me@ttaylorr.com","subject":"[PATCH v2 1/4] refspec: treat 'fetch' as a Boolean value","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:50:18Z","receivedAt":"2025-03-18T22:50:20Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\nhave macros called REFSPEC_FETCH and REFSPEC_PUSH. This confusingly\nsuggests that we might introduce other modes in the future, which, while\npossible, is highly unlikely.\n\nBut these values are treated as a Boolean, and stored in a struct field\ncalled 'fetch'. So the following:\n\n    if (refspec->fetch == REFSPEC_FETCH) { ... }\n\n, and\n\n    if (refspec->fetch) { ... }\n\nare equivalent. Let's avoid renaming the Boolean values \"true\" and\n\"false\" here and remove the two REFSPEC_ macros mentioned above.\n\nSince this value is truly a Boolean and will only ever take on a value\nof 0 or 1, we can declare it as a single bit unsigned field. In\npractice this won't shrink the size of 'struct refspec', but it more\nclearly indicates the intent.\n\nNote that this introduces some awkwardness like:\n\n    refspec_item_init_or_die(&spec, refspec, 1);\n\n, where it's unclear what the final \"1\" does. This will be addressed in\nthe following commits.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/pull.c     | 2 +-\n refspec.c          | 4 ++--\n refspec.h          | 9 +++------\n remote.c           | 4 ++--\n transport-helper.c | 2 +-\n 5 files changed, 9 insertions(+), 12 deletions(-)\n\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 9c4a00620a..8bbfcce729 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\trefspec_item_init_or_die(&spec, refspec, REFSPEC_FETCH);\n+\trefspec_item_init_or_die(&spec, refspec, 1);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n \t\tspec_src = \"HEAD\";\ndiff --git a/refspec.c b/refspec.c\nindex c6ad515f04..db5a1c34a5 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -233,7 +233,7 @@ void refspec_clear(struct refspec *rs)\n int valid_fetch_refspec(const char *fetch_refspec_str)\n {\n \tstruct refspec_item refspec;\n-\tint ret = refspec_item_init(&refspec, fetch_refspec_str, REFSPEC_FETCH);\n+\tint ret = refspec_item_init(&refspec, fetch_refspec_str, 1);\n \trefspec_item_clear(&refspec);\n \treturn ret;\n }\n@@ -249,7 +249,7 @@ void refspec_ref_prefixes(const struct refspec *rs,\n \t\tif (item->negative)\n \t\t\tcontinue;\n \n-\t\tif (rs->fetch == REFSPEC_FETCH) {\n+\t\tif (rs->fetch) {\n \t\t\tif (item->exact_sha1)\n \t\t\t\tcontinue;\n \t\t\tprefix = item->src;\ndiff --git a/refspec.h b/refspec.h\nindex e2b5cc54ef..155494cd3a 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -32,11 +32,8 @@ struct refspec_item {\n \n struct string_list;\n \n-#define REFSPEC_FETCH 1\n-#define REFSPEC_PUSH 0\n-\n-#define REFSPEC_INIT_FETCH { .fetch = REFSPEC_FETCH }\n-#define REFSPEC_INIT_PUSH { .fetch = REFSPEC_PUSH }\n+#define REFSPEC_INIT_FETCH { .fetch = 1 }\n+#define REFSPEC_INIT_PUSH { .fetch = 0 }\n \n /**\n  * An array of strings can be parsed into a struct refspec using\n@@ -47,7 +44,7 @@ struct refspec {\n \tint alloc;\n \tint nr;\n \n-\tint fetch;\n+\tunsigned fetch : 1;\n };\n \n int refspec_item_init(struct refspec_item *item, const char *refspec,\ndiff --git a/remote.c b/remote.c\nindex e609cf5c56..addd4a9999 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -143,8 +143,8 @@ static struct remote *make_remote(struct remote_state *remote_state,\n \tret->prune = -1;  /* unspecified */\n \tret->prune_tags = -1;  /* unspecified */\n \tret->name = xstrndup(name, len);\n-\trefspec_init(&ret->push, REFSPEC_PUSH);\n-\trefspec_init(&ret->fetch, REFSPEC_FETCH);\n+\trefspec_init(&ret->push, 0);\n+\trefspec_init(&ret->fetch, 1);\n \tstring_list_init_dup(&ret->server_options);\n \n \tALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,\ndiff --git a/transport-helper.c b/transport-helper.c\nindex d457b42550..43cd760119 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -162,7 +162,7 @@ static struct child_process *get_helper(struct transport *transport)\n \n \tdata->helper = helper;\n \tdata->no_disconnect_req = 0;\n-\trefspec_init(&data->rs, REFSPEC_FETCH);\n+\trefspec_init(&data->rs, 1);\n \n \t/*\n \t * Open the output as FILE* so strbuf_getline_*() family of\n-- \n2.49.0.3.gbb7a4a684c.dirty\n\n"},{"id":"514571","messageId":"c3021b82ce95d0c04d94b293773275a0a6bda01c.1742338207.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742338207.git.me@ttaylorr.com","subject":"[PATCH v2 2/4] refspec: replace `refspec_init()` with fetch/push variants","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:50:21Z","receivedAt":"2025-03-18T22:50:24Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"To avoid having a Boolean argument in the refspec_init() function,\nreplace it with two variants:\n\n  - `refspec_init_fetch()`\n  - `refspec_init_push()`\n\nto codify the meaning of that Boolean into the function's name itself.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n refspec.c          | 12 +++++++++---\n refspec.h          |  3 ++-\n remote.c           |  4 ++--\n transport-helper.c |  2 +-\n 4 files changed, 14 insertions(+), 7 deletions(-)\n\ndiff --git a/refspec.c b/refspec.c\nindex db5a1c34a5..f6be0c54d7 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -178,10 +178,16 @@ void refspec_item_clear(struct refspec_item *item)\n \titem->exact_sha1 = 0;\n }\n \n-void refspec_init(struct refspec *rs, int fetch)\n+void refspec_init_fetch(struct refspec *rs)\n {\n-\tmemset(rs, 0, sizeof(*rs));\n-\trs->fetch = fetch;\n+\tstruct refspec blank = REFSPEC_INIT_FETCH;\n+\tmemcpy(rs, &blank, sizeof(*rs));\n+}\n+\n+void refspec_init_push(struct refspec *rs)\n+{\n+\tstruct refspec blank = REFSPEC_INIT_PUSH;\n+\tmemcpy(rs, &blank, sizeof(*rs));\n }\n \n void refspec_append(struct refspec *rs, const char *refspec)\ndiff --git a/refspec.h b/refspec.h\nindex 155494cd3a..7db68e56c8 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -52,7 +52,8 @@ int refspec_item_init(struct refspec_item *item, const char *refspec,\n void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n \t\t\t      int fetch);\n void refspec_item_clear(struct refspec_item *item);\n-void refspec_init(struct refspec *rs, int fetch);\n+void refspec_init_fetch(struct refspec *rs);\n+void refspec_init_push(struct refspec *rs);\n void refspec_append(struct refspec *rs, const char *refspec);\n __attribute__((format (printf,2,3)))\n void refspec_appendf(struct refspec *rs, const char *fmt, ...);\ndiff --git a/remote.c b/remote.c\nindex addd4a9999..25af97a44b 100644\n--- a/remote.c\n+++ b/remote.c\n@@ -143,8 +143,8 @@ static struct remote *make_remote(struct remote_state *remote_state,\n \tret->prune = -1;  /* unspecified */\n \tret->prune_tags = -1;  /* unspecified */\n \tret->name = xstrndup(name, len);\n-\trefspec_init(&ret->push, 0);\n-\trefspec_init(&ret->fetch, 1);\n+\trefspec_init_push(&ret->push);\n+\trefspec_init_fetch(&ret->fetch);\n \tstring_list_init_dup(&ret->server_options);\n \n \tALLOC_GROW(remote_state->remotes, remote_state->remotes_nr + 1,\ndiff --git a/transport-helper.c b/transport-helper.c\nindex 43cd760119..69391ee7d2 100644\n--- a/transport-helper.c\n+++ b/transport-helper.c\n@@ -162,7 +162,7 @@ static struct child_process *get_helper(struct transport *transport)\n \n \tdata->helper = helper;\n \tdata->no_disconnect_req = 0;\n-\trefspec_init(&data->rs, 1);\n+\trefspec_init_fetch(&data->rs);\n \n \t/*\n \t * Open the output as FILE* so strbuf_getline_*() family of\n-- \n2.49.0.3.gbb7a4a684c.dirty\n\n"},{"id":"514572","messageId":"88f6a91c468f38669d958c58b2e2eefa9f448010.1742338207.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742338207.git.me@ttaylorr.com","subject":"[PATCH v2 3/4] refspec: remove refspec_item_init_or_die()","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:50:24Z","receivedAt":"2025-03-18T22:50:27Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"There are two callers of this function, which ensures that a dispatched\ncall to refspec_item_init() does not fail.\n\nIn the following commit, we're going to add fetch/push-specific variants\nof refspec_item_init(), which will turn one function into two. To avoid\nintroducing yet another pair of new functions (such as\nrefspec_item_init_push_or_die() and refspec_item_init_fetch_or_die()),\nlet's remove the thin wrapper entirely.\n\nThis duplicates a single line of code among two callers, but thins the\nrefspec.h API by one function, and prevents introducing two more in the\nfollowing commit.\n\nNote that we still have a trailing Boolean argument in the function\n`refspec_item_init()`. The following commit will address this.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/pull.c |  3 ++-\n refspec.c      | 10 ++--------\n refspec.h      |  2 --\n 3 files changed, 4 insertions(+), 11 deletions(-)\n\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex 8bbfcce729..a68a9955de 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,8 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\trefspec_item_init_or_die(&spec, refspec, 1);\n+\tif (!refspec_item_init(&spec, refspec, 1))\n+\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n \t\tspec_src = \"HEAD\";\ndiff --git a/refspec.c b/refspec.c\nindex f6be0c54d7..3aeb697505 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -160,13 +160,6 @@ int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)\n \treturn parse_refspec(item, refspec, fetch);\n }\n \n-void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n-\t\t\t      int fetch)\n-{\n-\tif (!refspec_item_init(item, refspec, fetch))\n-\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n-}\n-\n void refspec_item_clear(struct refspec_item *item)\n {\n \tFREE_AND_NULL(item->src);\n@@ -194,7 +187,8 @@ void refspec_append(struct refspec *rs, const char *refspec)\n {\n \tstruct refspec_item item;\n \n-\trefspec_item_init_or_die(&item, refspec, rs->fetch);\n+\tif (!refspec_item_init(&item, refspec, rs->fetch))\n+\t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \n \tALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);\n \trs->items[rs->nr] = item;\ndiff --git a/refspec.h b/refspec.h\nindex 7db68e56c8..614f34554e 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -49,8 +49,6 @@ struct refspec {\n \n int refspec_item_init(struct refspec_item *item, const char *refspec,\n \t\t      int fetch);\n-void refspec_item_init_or_die(struct refspec_item *item, const char *refspec,\n-\t\t\t      int fetch);\n void refspec_item_clear(struct refspec_item *item);\n void refspec_init_fetch(struct refspec *rs);\n void refspec_init_push(struct refspec *rs);\n-- \n2.49.0.3.gbb7a4a684c.dirty\n\n"},{"id":"514573","messageId":"f0c323988f274c40a86caa6c7a12ac7c0467ec1b.1742338207.git.me@ttaylorr.com","threadId":"62871","inReplyTo":"cover.1742338207.git.me@ttaylorr.com","subject":"[PATCH v2 4/4] refspec: replace `refspec_item_init()` with fetch/push variants","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T22:50:27Z","receivedAt":"2025-03-18T22:50:30Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"For similar reasons as in the previous refactoring of `refspec_init()`\ninto `refspec_init_fetch()` and `refspec_init_push()`, apply the same\nrefactoring to `refspec_item_init()`.\n\nSigned-off-by: Taylor Blau <me@ttaylorr.com>\n---\n builtin/fetch.c |  2 +-\n builtin/pull.c  |  2 +-\n refspec.c       | 22 +++++++++++++++++++---\n refspec.h       |  4 ++--\n 4 files changed, 23 insertions(+), 7 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 02af505469..9830c09011 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -586,7 +586,7 @@ static struct ref *get_ref_map(struct remote *remote,\n \t\tstruct refspec_item tag_refspec;\n \n \t\t/* also fetch all tags */\n-\t\trefspec_item_init(&tag_refspec, TAG_REFSPEC, 0);\n+\t\trefspec_item_init_push(&tag_refspec, TAG_REFSPEC);\n \t\tget_fetch_map(remote_refs, &tag_refspec, &tail, 0);\n \t\trefspec_item_clear(&tag_refspec);\n \t} else if (tags == TAGS_DEFAULT && *autotags) {\ndiff --git a/builtin/pull.c b/builtin/pull.c\nindex a68a9955de..a1ebc6ad33 100644\n--- a/builtin/pull.c\n+++ b/builtin/pull.c\n@@ -738,7 +738,7 @@ static const char *get_tracking_branch(const char *remote, const char *refspec)\n \tconst char *spec_src;\n \tconst char *merge_branch;\n \n-\tif (!refspec_item_init(&spec, refspec, 1))\n+\tif (!refspec_item_init_fetch(&spec, refspec))\n \t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \tspec_src = spec.src;\n \tif (!*spec_src || !strcmp(spec_src, \"HEAD\"))\ndiff --git a/refspec.c b/refspec.c\nindex 3aeb697505..0775358d96 100644\n--- a/refspec.c\n+++ b/refspec.c\n@@ -153,13 +153,24 @@ static int parse_refspec(struct refspec_item *item, const char *refspec, int fet\n \treturn 1;\n }\n \n-int refspec_item_init(struct refspec_item *item, const char *refspec, int fetch)\n+static int refspec_item_init(struct refspec_item *item, const char *refspec,\n+\t\t\t     int fetch)\n {\n \tmemset(item, 0, sizeof(*item));\n \titem->raw = xstrdup(refspec);\n \treturn parse_refspec(item, refspec, fetch);\n }\n \n+int refspec_item_init_fetch(struct refspec_item *item, const char *refspec)\n+{\n+\treturn refspec_item_init(item, refspec, 1);\n+}\n+\n+int refspec_item_init_push(struct refspec_item *item, const char *refspec)\n+{\n+\treturn refspec_item_init(item, refspec, 0);\n+}\n+\n void refspec_item_clear(struct refspec_item *item)\n {\n \tFREE_AND_NULL(item->src);\n@@ -186,8 +197,13 @@ void refspec_init_push(struct refspec *rs)\n void refspec_append(struct refspec *rs, const char *refspec)\n {\n \tstruct refspec_item item;\n+\tint ret;\n \n-\tif (!refspec_item_init(&item, refspec, rs->fetch))\n+\tif (rs->fetch)\n+\t\tret = refspec_item_init_fetch(&item, refspec);\n+\telse\n+\t\tret = refspec_item_init_push(&item, refspec);\n+\tif (!ret)\n \t\tdie(_(\"invalid refspec '%s'\"), refspec);\n \n \tALLOC_GROW(rs->items, rs->nr + 1, rs->alloc);\n@@ -233,7 +249,7 @@ void refspec_clear(struct refspec *rs)\n int valid_fetch_refspec(const char *fetch_refspec_str)\n {\n \tstruct refspec_item refspec;\n-\tint ret = refspec_item_init(&refspec, fetch_refspec_str, 1);\n+\tint ret = refspec_item_init_fetch(&refspec, fetch_refspec_str);\n \trefspec_item_clear(&refspec);\n \treturn ret;\n }\ndiff --git a/refspec.h b/refspec.h\nindex 614f34554e..8b04f9995e 100644\n--- a/refspec.h\n+++ b/refspec.h\n@@ -47,8 +47,8 @@ struct refspec {\n \tunsigned fetch : 1;\n };\n \n-int refspec_item_init(struct refspec_item *item, const char *refspec,\n-\t\t      int fetch);\n+int refspec_item_init_fetch(struct refspec_item *item, const char *refspec);\n+int refspec_item_init_push(struct refspec_item *item, const char *refspec);\n void refspec_item_clear(struct refspec_item *item);\n void refspec_init_fetch(struct refspec *rs);\n void refspec_init_push(struct refspec *rs);\n-- \n2.49.0.3.gbb7a4a684c.dirty\n"},{"id":"514575","messageId":"Z9n7f2P7AOKD2Pc1@nand.local","threadId":"62871","inReplyTo":"20250318054017.GA2051617@coredump.intra.peff.net","subject":"Re: [PATCH 1/2] fetch: only respect followRemoteHEAD with configured refspecs","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T23:02:23Z","receivedAt":"2025-03-18T23:02:26Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Tue, Mar 18, 2025 at 01:40:17AM -0400, Jeff King wrote:\n> @@ -1918,7 +1905,7 @@ static int do_fetch(struct transport *transport,\n>  \t\t\t\t  \"you need to specify exactly one branch with the --set-upstream option\"));\n>  \t\t}\n>  \t}\n> -\tif (set_head(remote_refs, transport->remote))\n> +\tif (do_set_head && set_head(remote_refs, transport->remote))\n>  \t\t;\n>  \t\t/*\n>  \t\t * Way too many cases where this can go wrong\n\nThis empty \"if\" statement is a little odd, though not the fault of your\npatch. I probably would have rewritten this like:\n\n    if (do_set_head) {\n        /*\n         * Way too many cases where this can go wrong\n         * so let's just fail silently for now.\n         */\n         set_head(remote, transport->remote);\n    }\n\n, but it's obviously NBD here, just something I noticed idly while\nreading the rest of the patch, which looks great to me.\n\nThanks,\nTaylor\n"},{"id":"514576","messageId":"Z9n7myvpnDOWFWqt@nand.local","threadId":"62871","inReplyTo":"xmqqmsdi2lm6.fsf@gitster.g","subject":"Re: [PATCH 0/2] limiting followRemoteHEAD being used","fromName":"Taylor Blau","fromEmail":"me@ttaylorr.com","sentAt":"2025-03-18T23:02:51Z","receivedAt":"2025-03-18T23:02:53Z","isPatch":true,"sender":{"key":"me@ttaylorr.com","avatar":"https://avatars.githubusercontent.com/u/301000140?v=4"},"body":"On Tue, Mar 18, 2025 at 12:18:41PM -0700, Junio C Hamano wrote:\n> Jeff King <peff@peff.net> writes:\n>\n> > There is one interesting case we haven't discussed. What should:\n> >\n> >   git fetch origin HEAD\n> >\n> > do with respect to refs/remotes/origin/HEAD? Right now it does nothing\n> > (at least with the v2 protocol). We ask about HEAD, but since we didn't\n> > fetch the matching ref, set_head() won't accept it. And after my\n> > patches, we would not even try to call set_head() at all (since we are\n> > not using the full refspecs).\n> >\n> > But it's also something I could see somebody doing to try to update\n> > refs/remotes/origin/HEAD. I've left it alone for now, since my series\n> > does not change the behavior either way. But it might be something we\n> > could do on top (though it gets funny, because with the code as it is\n> > now, we'd have to ask for all of refs/heads/ to see the pointed-to\n> > branch advertised).\n>\n> With v2 protocol, we have direct knowledge of where their HEAD\n> points at (when we ask for it), so we shouldn't even have to know\n> about what they have under \"refs/heads/\".  I do not think it is\n> within our contract that we'd somehow make sure that HEAD in a\n> remote-tracking hierarchy is not dangling, or something.\n>\n> In any case, I agree that it is sensible to leave it out of these\n> changes for now.\n\nDitto, and I am quite happy with the end-state of this series.\n\n> Thanks.\n\nThanks,\nTaylor\n"},{"id":"514651","messageId":"CABPp-BE6JmiXB+pUL1Z4ewVDbG2RBxCdA2m5-WTYtoKMTtu_Xw@mail.gmail.com","threadId":"62871","inReplyTo":"cover.1742338207.git.me@ttaylorr.com","subject":"Re: [PATCH v2 0/4] refspec: treat 'fetch' as a Boolean value","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2025-03-19T15:31:00Z","receivedAt":"2025-03-19T15:32:52Z","isPatch":true,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"On Tue, Mar 18, 2025 at 3:50 PM Taylor Blau <me@ttaylorr.com> wrote:\n>\n> Here's a small reroll that cleans up some wording in the first patch,\n> and drops the accidental inclusion of a stray 'git-diff-pairs' binary\n> that was sitting in my working tree at the time of writing the initial\n> commit.\n>\n> Otherwise the series is unchanged, but a range-diff is attached\n> nonetheless. Thanks for reviewing :-).\n>\n> Taylor Blau (4):\n>   refspec: treat 'fetch' as a Boolean value\n>   refspec: replace `refspec_init()` with fetch/push variants\n>   refspec: remove refspec_item_init_or_die()\n>   refspec: replace `refspec_item_init()` with fetch/push variants\n>\n>  builtin/fetch.c    |  2 +-\n>  builtin/pull.c     |  3 ++-\n>  refspec.c          | 38 +++++++++++++++++++++++++++-----------\n>  refspec.h          | 18 +++++++-----------\n>  remote.c           |  4 ++--\n>  transport-helper.c |  2 +-\n>  6 files changed, 40 insertions(+), 27 deletions(-)\n>\n> Range-diff against v1:\n> 1:  7e662acb5a ! 1:  04e1ab8209 refspec: treat 'fetch' as a Boolean value\n>     @@ Commit message\n>          refspec: treat 'fetch' as a Boolean value\n>\n>          Since 6d4c057859 (refspec: introduce struct refspec, 2018-05-16), we\n>     -    have constants called REFSPEC_FETCH and REFSPEC_PUSH. This misleadingly\n>     -    suggests that we might introduce other modes in the future.\n>     +    have macros called REFSPEC_FETCH and REFSPEC_PUSH. This confusingly\n>     +    suggests that we might introduce other modes in the future, which, while\n>     +    possible, is highly unlikely.\n>\n>          But these values are treated as a Boolean, and stored in a struct field\n>          called 'fetch'. So the following:\n>     @@ Commit message\n>              if (refspec->fetch) { ... }\n>\n>          are equivalent. Let's avoid renaming the Boolean values \"true\" and\n>     -    \"false\" here and remove the two REFSPEC_ constants mentioned above.\n>     +    \"false\" here and remove the two REFSPEC_ macros mentioned above.\n>\n>          Since this value is truly a Boolean and will only ever take on a value\n>          of 0 or 1, we can declare it as a single bit unsigned field. In\n>     @@ builtin/pull.c: static const char *get_tracking_branch(const char *remote, const\n>         if (!*spec_src || !strcmp(spec_src, \"HEAD\"))\n>                 spec_src = \"HEAD\";\n>\n>     - ## git-diff-pairs (new) ##\n>     - Binary files /dev/null and git-diff-pairs differ\n>     -\n>       ## refspec.c ##\n>      @@ refspec.c: void refspec_clear(struct refspec *rs)\n>       int valid_fetch_refspec(const char *fetch_refspec_str)\n> 2:  fd2354dade = 2:  c3021b82ce refspec: replace `refspec_init()` with fetch/push variants\n> 3:  49b470de61 = 3:  88f6a91c46 refspec: remove refspec_item_init_or_die()\n> 4:  95783265fd = 4:  f0c323988f refspec: replace `refspec_item_init()` with fetch/push variants\n>\n> base-commit: c702dd48567cfebca3d4a06b691de97da3f8dc4a\n> --\n> 2.49.0.3.gbb7a4a684c.dirty\n\nI read through the four patches, and it seems like a straightforward\ntranslation of the previous state to essentially a boolean.  I usually\nwould have picked an enum based on avoiding passing a 0 or 1 to\nfunctions as you have in the intermediate state, but you didn't stop\nat that intermediate state and refactored the function names which\nmakes the end result pretty nice.  Series looks good to me.\n"}]}