comparison 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
comparison
equal deleted inserted replaced
2508:ab460a3f0e3a 2509:6350b01d173f
475 r = self.rev(node) 475 r = self.rev(node)
476 d = self.index[r][-3:-1] 476 d = self.index[r][-3:-1]
477 if self.version == REVLOGV0: 477 if self.version == REVLOGV0:
478 return d 478 return d
479 return [ self.node(x) for x in d ] 479 return [ self.node(x) for x in d ]
480 def parentrevs(self, rev):
481 if rev == -1:
482 return (-1, -1)
483 d = self.index[rev][-3:-1]
484 if self.version == REVLOGV0:
485 return [ self.rev(x) for x in d ]
486 return d
480 def start(self, rev): 487 def start(self, rev):
481 if rev < 0: 488 if rev < 0:
482 return -1 489 return -1
483 if self.version != REVLOGV0: 490 if self.version != REVLOGV0:
484 return self.ngoffset(self.index[rev][0]) 491 return self.ngoffset(self.index[rev][0])
704 start will be returned 711 start will be returned
705 712
706 """ 713 """
707 if start is None: 714 if start is None:
708 start = nullid 715 start = nullid
709 reachable = {start: 1}
710 heads = {start: 1}
711 startrev = self.rev(start) 716 startrev = self.rev(start)
712 717 reachable = {startrev: 1}
718 heads = {startrev: 1}
719
720 parentrevs = self.parentrevs
713 for r in xrange(startrev + 1, self.count()): 721 for r in xrange(startrev + 1, self.count()):
714 n = self.node(r) 722 for p in parentrevs(r):
715 for pn in self.parents(n): 723 if p in reachable:
716 if pn in reachable: 724 reachable[r] = 1
717 reachable[n] = 1 725 heads[r] = 1
718 heads[n] = 1 726 if p in heads:
719 if pn in heads: 727 del heads[p]
720 del heads[pn] 728 return [self.node(r) for r in heads]
721 return heads.keys()
722 729
723 def children(self, node): 730 def children(self, node):
724 """find the children of a given node""" 731 """find the children of a given node"""
725 c = [] 732 c = []
726 p = self.rev(node) 733 p = self.rev(node)