revset: fix O(n**2) behaviour of bisect() (issue3381) stable
authorBryan O'Sullivan <bryano@fb.com>
Wed, 18 Apr 2012 21:27:35 -0700
branchstable
changeset 16467 7f59900e3f8b
parent 16466 c53a49c345e1
child 16468 2fb521d75dc2
revset: fix O(n**2) behaviour of bisect() (issue3381)
mercurial/revset.py
--- a/mercurial/revset.py	Wed Apr 18 14:04:58 2012 +0200
+++ b/mercurial/revset.py	Wed Apr 18 21:27:35 2012 -0700
@@ -291,7 +291,8 @@
     - ``ignored``            : csets ignored due to DAG topology
     """
     status = getstring(x, _("bisect requires a string")).lower()
-    return [r for r in subset if r in hbisect.get(repo, status)]
+    state = set(hbisect.get(repo, status))
+    return [r for r in subset if r in state]
 
 # Backward-compatibility
 # - no help entry so that we do not advertise it any more