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

Re: Determining commit reachability

From
Jeff King <peff@peff.net>
Date
Sep 6, 2010, 03:17 UTC
Message-ID
<20100906031700.GA25012@sigill.intra.peff.net>
In-Reply-To
<4C83FEC3.3040101@gmail.com>
On Sun, Sep 05, 2010 at 10:34:11PM +0200, Artur Skawina wrote:
Show 5 quoted lines
> Given commit C, refs (branches) R, S and T what would be the best way
> to test whether 'C' is reachable from any of the heads?
> 
> Checking if `git rev-list -n1 O ^R ^S ^T` produces any output is what
> i came up with; is there a better (ie faster) solution?

I think that is about as fast as you will get. You could try something with git-merge-base, but it should be about the same speed.

Note that neither will tell you _which_ head the target was reachable from. For that, given the current interface you have to test each head individually. If you write some C code, you can do it all in a single traversal. See this thread for some discussion of how "git tag --contains" can be sped up:

  http://article.gmane.org/gmane.comp.version-control.git/150039
-Peff
Previous: Artur SkawinaNext: Artur Skawina
Message 2 of 13 in “Determining commit reachability”
  1. Artur SkawinaSep 5, 2010
  2. Jeff KingSep 6, 2010
  3. Artur SkawinaSep 6, 2010
  4. Junio C HamanoSep 6, 2010
  5. Sverre RabbelierSep 6, 2010
  6. Ævar Arnfjörð BjarmasonSep 6, 2010
  7. Sverre RabbelierSep 6, 2010
  8. Junio C HamanoSep 6, 2010
  9. Documentation: explain "git branch --with"Jonathan Nieder, Sep 7, 2010
  10. Ævar Arnfjörð BjarmasonSep 7, 2010
  11. Junio C HamanoSep 9, 2010
  12. Nguyen Thai Ngoc DuySep 7, 2010
  13. Nguyen Thai Ngoc DuySep 7, 2010

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.