Mercurial > public > mercurial-scm > hg-stable
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 |