[PATCH] revset: added smartset attribute to new classes to test at mfunc and getset
lmoscovicz at fb.com
Tue Feb 18 18:37:47 CST 2014
On 2/18/14, 4:25 PM, "Pierre-Yves David" <pierre-yves.david at ens-lyon.org>
>On 02/18/2014 04:13 PM, Lucas Moscovicz wrote:
>> # HG changeset patch
>> # User Lucas Moscovicz <lmoscovicz at fb.com>
>> # Date 1392767686 28800
>> # Tue Feb 18 15:54:46 2014 -0800
>> # Node ID d9813f85f80e36e413da7bd1b5edd3a2118bc715
>> # Parent c29948fed40a2d9755ecaa01ec05bfa542f65670
>> revset: added smartset attribute to new classes to test at mfunc and
>I believe this patch is important. There is a lots of extension out
>there implementing new revset. We are adding smarter feature which are
>mostly a super set of the old behavior (using list). There is no good
>reason to break the compatibility for our user out there.
>I know we do not have a public API but this does not mean we should
>gratuitously break widely used a trivial API. (I could compare that to
>breaking the changectx API for no good reason).
>> Now extensions shouldn't break when adding new revsets.
>Did you actually test it with old style code?
I just tested it with an extension that used to fail over this same
problem and I had fixed manually.
>> diff --git a/mercurial/revset.py b/mercurial/revset.py
>> --- a/mercurial/revset.py
>> +++ b/mercurial/revset.py
>> @@ -195,7 +195,10 @@
>> def getset(repo, subset, x):
>> if not x:
>> raise error.ParseError(_("missing argument"))
>> - return methods[x](repo, subset, *x[1:])
>> + s = methods[x](repo, subset, *x[1:])
>> + if util.safehasattr(s, 'smartset'):
>> + return s
>We can probably just check for the presence of a `set` attribute. as it
>is the most visible addition of the new object.
More information about the Mercurial-devel