Re: Specifying revisions in the future

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Jakub Narebski" <jnareb@xxxxxxxxx>
To: "Andreas Schwab" <schwab@xxxxxxxxxxxxxx>
Cc: "Matthieu Moy" <Matthieu.Moy@xxxxxxxxxxxxxxx>; <jpaugh@xxxxxx>; <git@xxxxxxxxxxxxxxx>
Sent: Sunday, February 05, 2012 10:24 PM
On Sun, 5 Feb 2012, Andreas Schwab wrote:
Jakub Narebski <jnareb@xxxxxxxxx> writes:
Andreas Schwab <schwab@xxxxxxxxxxxxxx> writes:
Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> 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.

> 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.
--
Is there also a rule missing for X+2, viewed from D, in this example

X<---Y<---Z<---
         \          \
A<----B<----C<----D
as to which order the first parent rule should _not_ be applied when D's first parent chain doesn't reach X (it reaches A). Using 'oldest' first for alternate parent testing would make X+2 = B, whilst 'newest' first would make X+2=Z. I have used the chain order for 'newest/oldest', rather than commit date.
(I'm sure that there already exists a natural rule in the dag walk order).

Philip
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]