[PATCH 3 of 3] revset: fast implementation for fullreposet.__and__

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Sep 22 20:40:44 CDT 2014



On 09/22/2014 05:47 PM, Durham Goode wrote:
>
> On 9/22/14, 5:18 PM, Pierre-Yves David wrote:
>>
>>
>> On 09/22/2014 05:10 PM, Durham Goode wrote:
>>>
>>> On 9/19/14, 5:07 PM, Pierre-Yves David wrote:
>>>> +        This boldly assume the other contains valid revs only.
>>>>
>>> I feel like other revsets may depend on the spanset to do the hidden
>>> commit filtering, and this would remove that.
>>
>> If such exists, I would says that the bug is in the revsets. Are you
>> aware of any?
>>
>>>  Have you run the evolution tests with this enabled?
>>
>> Not yet, doing it now, (I have to fix a couple of unrelated changes in
>> evolve test first)
>>
> _intlist seems to assume the given revs are fine.  I wouldn't be
> surprised if just passing a rev number also just created a set with the
> rev in it without checking if it's filtered first.
>
> filelog() might have the same issue, since it returns linkrevs
> directly.  Though it uses filter instead of &, so it's probably ok for now.
>
> It might be worth having an exception or debug assert or something for a
> bit to flush out issues?

After IRL discussion with Durham we resolved to add a check in the 
__and__ method to check if any filtered revision exists in the other 
set. (And filter them out if they do)

This should remove most of the core bug related to this change.

However, this won't help for value below 0 and above unfiltered tip. so 
we'll have to so something about it at some point.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list