--- a/mercurial/revset.py Thu Feb 06 08:36:11 2014 -0800
+++ b/mercurial/revset.py Wed Feb 12 10:16:21 2014 -0800
@@ -2129,5 +2129,25 @@
def set(self):
return set([r for r in self])
+class spanset(object):
+ """Duck type for baseset class which represents a range of revisions and
+ can work lazily and without having all the range in memory
+ """
+ def __init__(self, start, end):
+ self._start = start
+ self._end = end
+
+ def __iter__(self):
+ if self._start <= self._end:
+ for r in xrange(self._start, self._end):
+ yield r
+ else:
+ for r in xrange(self._start, self._end, -1):
+ yield r
+
+ def __contains__(self, x):
+ return (x <= self._start and x > self._end) or (x >= self._start and x<
+ self._end)
+
# tell hggettext to extract docstrings from these functions:
i18nfunctions = symbols.values()