Re: Specifying revisions in the future
On Sun, 5 Feb 2012, Andreas Schwab wrote:
Show 17 quoted lines
> Jakub Narebski <jnareb@gmail.com> writes:
>> Andreas Schwab <schwab@linux-m68k.org> writes:
>>> Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
>>>
>>>> "the successor of <commit>", OTOH, is not well defined, since there can
>>>> be several successors, and one can't order them reliably (you can't
>>>> really know the set of successors, because they can exist in different
>>>> repositories).
>>>
>>> Yet it would be nice to have a concise notation for "the nth successor
>>> of <commit> towards <commit>" (using --first-parent ordering when
>>> ambiguous).
>>
>> First, "the nth successor"... from which refs?
>
> From the first given commit towards the other given commit (the latter
> defaulting to HEAD).
That helps some, but not all situations, see below.
Show 13 quoted lines
> > Second, `--first-parent' won't help here. Take for example the
> > following situation:
> >
> > ---X<---*<---.<---A
> > \
> > \--.<---B
> >
> > X+3 is A or B?
>
> If "towards A" then it is A, if "towards B", it is B. In other words,
> to get the "nth successor of C1 towards C2" take the leftmost possible
> parent when walking from C2 to C1, then walk back n commits along this
> path. This way you should have an unambigous definition.
Nope, still ambiguous:
---X<---*<---.<---A<---.<---M<---
\ /
\--.<---B<------/Is X+3 A or B? Though '--first-parent + towards N' is I think unambiguous.
--
Jakub Narebski
Poland