revset: added ascending attribute to addset class
authorLucas Moscovicz <lmoscovicz@fb.com>
Tue, 11 Mar 2014 16:52:15 -0700
changeset 20712 c152e538b85b
parent 20711 b95490cf8abd
child 20713 6a1a4c212d50
child 20715 b93791e0de25
revset: added ascending attribute to addset class In case both collections are in an ascending/descending order then we will be able to iterate them lazily while keeping the order.
mercurial/revset.py
--- a/mercurial/revset.py	Mon Mar 10 10:49:04 2014 -0700
+++ b/mercurial/revset.py	Tue Mar 11 16:52:15 2014 -0700
@@ -2312,13 +2312,18 @@
     Wrapper structure for lazily adding two structures without losing much
     performance on the __contains__ method
 
+    If the ascending attribute is set, that means the two structures are
+    ordered in either an ascending or descending way. Therefore, we can add
+    them mantaining the order by iterating over both at the same time
+
     This class does not duck-type baseset and it's only supposed to be used
     internally
     """
-    def __init__(self, revs1, revs2):
+    def __init__(self, revs1, revs2, ascending=None):
         self._r1 = revs1
         self._r2 = revs2
         self._iter = None
+        self._ascending = ascending
 
     def _iterator(self):
         if not self._iter: