[PATCH] revset: allow negative integers to list child revs

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Oct 7 15:06:23 CDT 2014



On 10/07/2014 01:01 PM, Sean Farley wrote:
>
> Pierre-Yves David writes:
>
>> On 10/07/2014 11:40 AM, Sean Farley wrote:
>>>
>>> Pierre-Yves David writes:
>>>
>>>> On 10/04/2014 09:57 AM, Sean Farley wrote:
>>>>> # HG changeset patch
>>>>> # User Sean Farley <sean.michael.farley at gmail.com>
>>>>> # Date 1412441841 25200
>>>>> #      Sat Oct 04 09:57:21 2014 -0700
>>>>> # Node ID c3bd6d6457bf42d2fbcaba89cf0418a0d0604239
>>>>> # Parent  78c916f24dd99a56e4c29153a5df3bd7d1c40edd
>>>>> revset: allow negative integers to list child revs
>>>>
>>>> Quick reply on various subject.
>>>>
>>>> As X^1 and X^2 return a single revision (per X) (short version for p1(X)
>>>> and P2(X)) It would be a bad idea to have X^-1 return multiple revision.
>>>
>>> I agree.
>>>
>>>> first(children(X)) have less good defined semantic as first(parents(X))
>>>> as it no deterministic and will change over time. the first parent of a
>>>> changeset is carved in stone. The amount of Children change over time
>>>> and with history rewriting, their order change over time. So you cannot
>>>> really predict the order. You need to (a) have one parent or (b) look
>>>> the number up (c) use a more precise revsets:
>>>>      children(X) and ::bookmarkname
>>>>      children(X) and desc(yyy)
>>>
>>> They should always be returned in the revlog order. That is what we
>>> currently do with referring to children via revision numbers. This would
>>> be no added confusion.
>>
>> You got me wrong. Their will of course be returned in revlog order. This
>> means that if you have three child A, B, C. You initially have
>>
>>     children(X) = A, B, C
>>
>> Then you amend A. So you get
>>
>>     children(X) = B, C, A
>>
>> And C get touched. So you get
>>
>>
>>     children(X) = B, A, C
>>
>> Then you pull a new version X from someone with a children D. You evolve
>> and you end up with:
>>
>>     children(X) = D, B, A, C
>>
>> So you cannot blindly rely on c(X, 1) to give you stable result. And
>> normal human being have too look up the revset or use more precise revset.
>>
>> (will get to reply to the rest later)
>
> Yes, of course, but this is derailing the current discussion. We have
> the concept of local revision numbers and this patch is a way to refer
> to that. I would suggest another discussion about the order of
> children().

This is not to challenge the order of children(X). This is to point out 
that children can barely be used alone and therefor having a supershort 
version of it is not that useful.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list