[PATCH 09 of 13] revset: replace uses of set for filtering with revsubset
Bryan O'Sullivan
bos at serpentine.com
Fri Jun 1 17:52:07 CDT 2012
# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1338591022 25200
# Node ID 935f0d6a2bb00cbc9fd4ebdb9a9f791fa2df6969
# Parent 306cbeed89406db750345fad854f05a48b5a332f
revset: replace uses of set for filtering with revsubset
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -291,14 +291,14 @@ def rangeset(repo, subset, x, y):
r = range(m, n + 1)
else:
r = range(m, n - 1, -1)
- s = set(subset)
+ s = revsubset(subset)
return [x for x in r if x in s]
def dagrange(repo, subset, x, y):
if subset:
r = revsubset(repo)
xs = _revsbetween(repo, getset(repo, r, x), getset(repo, r, y))
- s = set(subset)
+ s = revsubset(subset)
return [r for r in xs if r in s]
return []
@@ -307,12 +307,12 @@ def andset(repo, subset, x, y):
def orset(repo, subset, x, y):
xl = getset(repo, subset, x)
- s = set(xl)
+ s = revsubset(xl)
yl = getset(repo, [r for r in subset if r not in s], y)
return xl + yl
def notset(repo, subset, x):
- s = set(getset(repo, subset, x))
+ s = revsubset(getset(repo, subset, x))
return [r for r in subset if r not in s]
def listset(repo, subset, a, b):
@@ -347,7 +347,8 @@ def ancestor(repo, subset, x):
raise error.ParseError(_("ancestor arguments must be single revisions"))
an = [repo[a[0]].ancestor(repo[b[0]]).rev()]
- return [r for r in an if r in subset]
+ s = revsubset(subset)
+ return [r for r in an if r in s]
def _ancestors(repo, subset, x, followfirst=False):
args = getset(repo, revsubset(repo), x)
@@ -838,7 +839,7 @@ def limit(repo, subset, x):
except (TypeError, ValueError):
# i18n: "limit" is a keyword
raise error.ParseError(_("limit expects a number"))
- ss = set(subset)
+ ss = revsubset(subset)
os = getset(repo, revsubset(repo), l[0])[:lim]
return [r for r in os if r in ss]
@@ -856,7 +857,7 @@ def last(repo, subset, x):
except (TypeError, ValueError):
# i18n: "last" is a keyword
raise error.ParseError(_("last expects a number"))
- ss = set(subset)
+ ss = revsubset(subset)
os = getset(repo, revsubset(repo), l[0])[-lim:]
return [r for r in os if r in ss]
@@ -1356,8 +1357,7 @@ def _list(repo, subset, x):
s = getstring(x, "internal error")
if not s:
return []
- if not isinstance(subset, set):
- subset = set(subset)
+ subset = revsubset(subset)
ls = [repo[r].rev() for r in s.split('\0')]
return [r for r in ls if r in subset]
More information about the Mercurial-devel
mailing list