[PATCH] changelog: only use filtering headrevs C extension when it is available

Mads Kiilerich mads at kiilerich.com
Fri Oct 24 08:31:05 CDT 2014


On 10/24/2014 03:21 PM, Pierre-Yves David wrote:
> On 10/24/2014 02:39 AM, Mads Kiilerich wrote:
>> @@ -172,11 +172,13 @@ class changelog(revlog.revlog):
>>       def headrevs(self):
>>           if self.filteredrevs:
>>               try:
>> -                return self.index.headrevs(self.filteredrevs)
>> -            # AttributeError covers non-c-extension environments.
>> -            # TypeError allows us work with old c extensions.
>> -            except (AttributeError, TypeError):
>> +                # Throw AttributeError in non-c-extension environments.
>> +                f = self.index.headrevs
>> +                # Throw AttributeError if C extension too old.
>> +                parsers.asciilower
>> +            except AttributeError:
>>                   return self._headrevs()
>> +            return f(self.filteredrevs)
>
> Actually, I now remind that the TypeError is here to catch the fact we 
> (read, durham) added a the filtered revs argument to headrevs. I 
> assume that your parser.asciilower access try to detect this but it is 
> far from obvious.

It is not obvious that we use asciilower to catch the situation that the 
extension is too old?

/Mads



More information about the Mercurial-devel mailing list