comparison mercurial/revlog.py @ 3925:27230c29bfec 0.9.3

fix calculation of new heads added during push with -r fix issue450
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Sun, 17 Dec 2006 05:00:22 +0100
parents 05120e210c65
children 4df475e22248 90bb1ab53a85
comparison
equal deleted inserted replaced
3918:5f0e00224cde 3925:27230c29bfec
715 assert orderedout 715 assert orderedout
716 assert roots 716 assert roots
717 assert heads 717 assert heads
718 return (orderedout, roots, heads) 718 return (orderedout, roots, heads)
719 719
720 def heads(self, start=None): 720 def heads(self, start=None, stop=None):
721 """return the list of all nodes that have no children 721 """return the list of all nodes that have no children
722 722
723 if start is specified, only heads that are descendants of 723 if start is specified, only heads that are descendants of
724 start will be returned 724 start will be returned
725 725 if stop is specified, it will consider all the revs from stop
726 as if they had no children
726 """ 727 """
727 if start is None: 728 if start is None:
728 start = nullid 729 start = nullid
730 if stop is None:
731 stop = []
732 stoprevs = dict.fromkeys([self.rev(n) for n in stop])
729 startrev = self.rev(start) 733 startrev = self.rev(start)
730 reachable = {startrev: 1} 734 reachable = {startrev: 1}
731 heads = {startrev: 1} 735 heads = {startrev: 1}
732 736
733 parentrevs = self.parentrevs 737 parentrevs = self.parentrevs
734 for r in xrange(startrev + 1, self.count()): 738 for r in xrange(startrev + 1, self.count()):
735 for p in parentrevs(r): 739 for p in parentrevs(r):
736 if p in reachable: 740 if p in reachable:
737 reachable[r] = 1 741 if r not in stoprevs:
742 reachable[r] = 1
738 heads[r] = 1 743 heads[r] = 1
739 if p in heads: 744 if p in heads and p not in stoprevs:
740 del heads[p] 745 del heads[p]
746
741 return [self.node(r) for r in heads] 747 return [self.node(r) for r in heads]
742 748
743 def children(self, node): 749 def children(self, node):
744 """find the children of a given node""" 750 """find the children of a given node"""
745 c = [] 751 c = []