[PATCH 3 of 7] revset: replace uses of set for filtering with revsubset

Bryan O'Sullivan bos at serpentine.com
Mon Jun 4 17:25:09 CDT 2012


# HG changeset patch
# User Bryan O'Sullivan <bryano at fb.com>
# Date 1338848634 25200
# Node ID 40aa5fcf8bef8a1336caf95848282bc9ac9a7002
# Parent  a0bc9dbfe011f8cd3e12d7fbf409adad4fd89ee1
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
@@ -289,14 +289,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 []
 
@@ -305,12 +305,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):
@@ -345,7 +345,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)
@@ -836,7 +837,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]
 
@@ -854,7 +855,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]
 
@@ -1354,8 +1355,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