[PATCH] revset: added smartset attribute to new classes to test at mfunc and getset
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Wed Feb 19 00:25:46 UTC 2014
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 getset
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?
> 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[0]](repo, subset, *x[1:])
> + s = methods[x[0]](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.
--
Pierre-Yves
More information about the Mercurial-devel
mailing list