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.
--- 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: