Mercurial > public > mercurial-scm > hg
diff mercurial/revlog.py @ 2509:6350b01d173f
merge with wsgi changes.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Tue, 27 Jun 2006 00:10:41 -0700 |
parents | 6ff82ec1f4b8 |
children | c35694df7b13 |
line wrap: on
line diff
--- a/mercurial/revlog.py Tue Jun 27 00:09:37 2006 -0700 +++ b/mercurial/revlog.py Tue Jun 27 00:10:41 2006 -0700 @@ -477,6 +477,13 @@ if self.version == REVLOGV0: return d return [ self.node(x) for x in d ] + def parentrevs(self, rev): + if rev == -1: + return (-1, -1) + d = self.index[rev][-3:-1] + if self.version == REVLOGV0: + return [ self.rev(x) for x in d ] + return d def start(self, rev): if rev < 0: return -1 @@ -706,19 +713,19 @@ """ if start is None: start = nullid - reachable = {start: 1} - heads = {start: 1} startrev = self.rev(start) + reachable = {startrev: 1} + heads = {startrev: 1} + parentrevs = self.parentrevs for r in xrange(startrev + 1, self.count()): - n = self.node(r) - for pn in self.parents(n): - if pn in reachable: - reachable[n] = 1 - heads[n] = 1 - if pn in heads: - del heads[pn] - return heads.keys() + for p in parentrevs(r): + if p in reachable: + reachable[r] = 1 + heads[r] = 1 + if p in heads: + del heads[p] + return [self.node(r) for r in heads] def children(self, node): """find the children of a given node"""