comparison mercurial/revlog.py @ 17975:c56b5b65430d

revlog: allow reverse iteration with revlog.revs We often need to perform rev iteration in reverse order. This changeset makes it possible to do so, in order to avoid costly reverse or reversed() calls later.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Wed, 21 Nov 2012 00:42:05 +0100
parents 7ef00d09ef35
children f88c60e740a1
comparison
equal deleted inserted replaced
17974:337d728e644f 17975:c56b5b65430d
255 return len(self.index) - 1 255 return len(self.index) - 1
256 def __iter__(self): 256 def __iter__(self):
257 return iter(xrange(len(self))) 257 return iter(xrange(len(self)))
258 def revs(self, start=0, stop=None): 258 def revs(self, start=0, stop=None):
259 """iterate over all rev in this revlog (from start to stop)""" 259 """iterate over all rev in this revlog (from start to stop)"""
260 if stop is None: 260 step = 1
261 if stop is not None:
262 if start > stop:
263 step = -1
264 stop += step
265 else:
261 stop = len(self) 266 stop = len(self)
262 else: 267 return xrange(start, stop, step)
263 stop += 1
264 return xrange(start, stop)
265 268
266 @util.propertycache 269 @util.propertycache
267 def nodemap(self): 270 def nodemap(self):
268 self.rev(self.node(0)) 271 self.rev(self.node(0))
269 return self._nodecache 272 return self._nodecache