git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] ref-filter: support filtering of operational refs

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 26, 2023, 17:01 UTC
Message-ID
<xmqqsf3oj3u8.fsf@gitster.g>
In-Reply-To
<CAOLa=ZRedfBUjukbN8dFT9CZETe4pz1UR+eWfJwORWuMHSk0Rw@mail.gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
Show 5 quoted lines
> Thanks for that, I did play around with trying to find files which
> could be refs in the $GIT_DIR, but the issue is that there will be
> false positives. e.g. `COMMIT_EDITMSG` could be confused for a
> pseudoref (passes is_pseudoref_syntax()) and it could potentially also
> contain a commit-ish value.

It would not begin with 40-hex, though. If I were doing this, perhaps I'd say we should first split is_pseudoref_syntax() that is overly loose into to classes (e.g. "caps with underscores that ends with HEAD" and everything else), silently reject false positives among the latter class. Then we rename those that are misnamed (there should be only few, like AUTO_MERGE that should be a pseudoref but named without _HEAD; I do not think of anything that ends with _HEAD that is not a ref) over time and drop the latter class.

Show 6 quoted lines
> While you're here, I wonder if you have any thoughts on the last block
> of my first mail.
>
>> Over this, I'm also curious on what the mailing list thinks about
>> exposing this to the client side. Would an `--all` option for
>> git-for-each-ref(1) be sufficient?

"list pseudorefs in addition to things below refs/"? Sounds OK to me as a feature.

However, "--all" does not mean that in the context of "git log" family of commands. Over there, it means "not just --branches, --tags, and --remotes, but everything" which is still limited below "refs/".

As "git for-each-ref" takes pattern that is prefix match, e.g.,
    $ git for-each-ref refs/remotes/

shows everything like refs/remotes/origin/main that begins with refs/remotes/, I wonder if

    $ git for-each-ref ""

should mean what you are asking for. After all, "git for-each-ref" does *not* take "--branches" and others like "git log" family to limit its operation to subhierarchy of "refs/" to begin with.

Previous: Karthik NayakNext: Karthik Nayak
Message 6 of 27 in “[RFC 0/2] Initial changes to support printing all refs”
  1. Karthik NayakDec 21, 2023
  2. 1/2 refs: introduce the `refs_single_ref` functionKarthik Nayak, Dec 21, 2023
  3. 2/2 ref-filter: support filtering of operational refsKarthik Nayak, Dec 21, 2023
  4. Junio C HamanoDec 21, 2023
  5. Karthik NayakDec 22, 2023
  6. Junio C HamanoDec 26, 2023
  7. Karthik NayakJan 2, 2024
  8. Junio C HamanoJan 2, 2024
  9. Taylor BlauJan 2, 2024
  10. Patrick SteinhardtJan 3, 2024
  11. Karthik NayakJan 3, 2024
  12. Junio C HamanoJan 3, 2024
  13. Patrick SteinhardtJan 3, 2024
  14. Junio C HamanoJan 3, 2024
  15. Patrick SteinhardtJan 3, 2024
  16. Junio C HamanoJan 3, 2024
  17. Patrick SteinhardtJan 3, 2024
  18. Junio C HamanoJan 3, 2024
  19. Patrick SteinhardtJan 3, 2024
  20. Karthik NayakJan 4, 2024
  21. Junio C HamanoJan 4, 2024
  22. Taylor BlauJan 3, 2024
  23. Patrick SteinhardtJan 3, 2024
  24. Taylor BlauJan 3, 2024
  25. Patrick SteinhardtDec 28, 2023
  26. Karthik NayakJan 2, 2024
  27. Taylor BlauJan 2, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.