Re: Finding a branch point in git
- From
Jeff King <peff@peff.net>
- Date
- May 30, 2012, 21:54 UTC
- Message-ID
- <20120530215415.GB3237@sigill.intra.peff.net>
- In-Reply-To
- <CAMP44s0UBsVicuEcwACsm1zTT_jGau_Q20hJv4J_6uvancYJRQ@mail.gmail.com>
On Wed, May 30, 2012 at 07:07:39PM +0200, Felipe Contreras wrote:
Show 24 quoted lines
> On Mon, May 28, 2012 at 9:06 PM, Jeff King <peff@peff.net> wrote: > > On Mon, May 28, 2012 at 02:36:04PM +0200, Felipe Contreras wrote: > > > >> > What about a history with multiple branches? > >> > > >> > --X--A--B--C--D----E (master) > >> > \ / > >> > G--H--I---J (branch X) > >> > \ / > >> > K--L (branch Y) > >> [...] > >> > >> Yes, but then you would need to specify a second branch. I would avoid > >> that if possible. > > > > I agree that is less nice. But I don't think the operation is > > well-defined with a single branch. If you ask for "when did branch X > > split", then in the above graph it is unclear if you meant "split from > > master", or "split from Y". > > If you look from the context that I explained in the first mail; it > would be from *any* branch; IOW; find the first commit from branch X > (G), and then find the parent. That would be the first commit where > branch X started.
I'm not sure that's possible, though, in the face of criss-cross merges. How do we distinguish the history above from one in which branch Y was forked from master at G, and then branch X was forked from branch Y at H?
Show 7 quoted lines
> I think it would be easy to support this case if somehow there was a > way to find all the commits that comprise a branch; > > % git log branch ^<any-other-branch> > > I could swear I saw such an option, but I've been looking for days and > I can't find it.
I don't think there is such an option. You have to do something like:
{
echo "--not"
git for-each-ref --format='%(refname)' | grep -v "^$branch\$"
} |
git rev-list --stdin $branch-Peff