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

Re: [PATCH 2/2] ls-refs.c: traverse longest common ref prefix

From
Jeff King <peff@peff.net>
Date
Jan 20, 2021, 00:08 UTC
Message-ID
<YAd0kyBP8LRSEBYw@coredump.intra.peff.net>
In-Reply-To
<YAdwvzQCGc5TfXTF@nand.local>
On Tue, Jan 19, 2021 at 06:52:31PM -0500, Taylor Blau wrote:
Show 6 quoted lines
> > I guess they require an explicit '*', but fundamentally it's the same
> > concept (and certainly they are not just single references).
> 
> Yeah, that is the point that I was trying to make. But re-reading this
> patch after knowing that it confused you, I think the clearest way to
> make that point is to drop that second paragraph entirely.
Sounds good.
Show 8 quoted lines
> > Based on my other poking, I'm not entirely sure that we can return too
> > many results. But I do think it's worth keeping the caller more careful.
> 
> It can return more results, but I don't think that my writing in
> b31e2680c4 is particularly clear. Here's an example, though. Say I ask
> for `git for-each-refs 'refs/tags/a/*' 'refs/tags/a/b/c'`. The LCP of
> that is definitely "refs/tags/a", which might traverse other stuff like
> "refs/tags/a/b/d", which wouldn't get matched by either.

I thought that would be matched by refs/tags/a/*, but it looks like for-each-ref treats "*" as matching only a single path component. So really just:

  git for-each-ref refs/tags/*

requires extra filtering already. But AFAICT none of that is true for ls-refs, which is strictly prefix matching already.

-Peff
Previous: Taylor BlauNext: Jacob Vosmaer
Message 6 of 27 in “Re: [PATCH 1/1] ls-refs.c: minimize number of refs visited”
  1. Jacob VosmaerJan 19, 2021
  2. 0/2 ls-refs: only traverse through longest common ref prefixTaylor Blau, Jan 19, 2021
  3. 2/2 ls-refs.c: traverse longest common ref prefixTaylor Blau, Jan 19, 2021
  4. Jeff KingJan 19, 2021
  5. Taylor BlauJan 19, 2021
  6. Jeff KingJan 20, 2021
  7. Jacob VosmaerJan 20, 2021
  8. 1/2 refs: expose 'for_each_fullref_in_prefixes'Taylor Blau, Jan 19, 2021
  9. 0/3 ls-refs: traverse prefixes of disjoint "ref-prefix" setsTaylor Blau, Jan 20, 2021
  10. 2/3 ls-refs.c: initialize 'prefixes' before using itTaylor Blau, Jan 20, 2021
  11. Jeff KingJan 20, 2021
  12. Taylor BlauJan 20, 2021
  13. Jacob VosmaerJan 20, 2021
  14. 3/3 ls-refs.c: traverse prefixes of disjoint "ref-prefix" setsTaylor Blau, Jan 20, 2021
  15. 1/3 refs: expose 'for_each_fullref_in_prefixes'Taylor Blau, Jan 20, 2021
  16. Jeff KingJan 20, 2021
  17. Taylor BlauJan 20, 2021
  18. Junio C HamanoJan 23, 2021
  19. Taylor BlauJan 25, 2021
  20. Junio C HamanoJan 23, 2021
  21. Taylor BlauJan 19, 2021
  22. Jeff KingJan 19, 2021
  23. Jeff KingJan 19, 2021
  24. Taylor BlauJan 19, 2021
  25. Jeff KingJan 19, 2021
  26. Jeff KingJan 19, 2021
  27. Taylor BlauJan 19, 2021

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.