From: Jeff King Date: Mon, 06 Sep 2010 03:17:01 GMT Subject: Re: Determining commit reachability 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: > 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