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