##// END OF EJS Templates
fix calculation of new heads added during push with -r...
Benoit Boissinot -
r3923:27230c29 0.9.3 default
parent child Browse files
Show More
@@ -1392,7 +1392,7 b' class localrepository(repo.repository):'
1392 1392 newheads = list(heads)
1393 1393 for r in remote_heads:
1394 1394 if r in self.changelog.nodemap:
1395 desc = self.changelog.heads(r)
1395 desc = self.changelog.heads(r, heads)
1396 1396 l = [h for h in heads if h in desc]
1397 1397 if not l:
1398 1398 newheads.append(r)
@@ -717,15 +717,19 b' class revlog(object):'
717 717 assert heads
718 718 return (orderedout, roots, heads)
719 719
720 def heads(self, start=None):
720 def heads(self, start=None, stop=None):
721 721 """return the list of all nodes that have no children
722 722
723 723 if start is specified, only heads that are descendants of
724 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 728 if start is None:
728 729 start = nullid
730 if stop is None:
731 stop = []
732 stoprevs = dict.fromkeys([self.rev(n) for n in stop])
729 733 startrev = self.rev(start)
730 734 reachable = {startrev: 1}
731 735 heads = {startrev: 1}
@@ -734,10 +738,12 b' class revlog(object):'
734 738 for r in xrange(startrev + 1, self.count()):
735 739 for p in parentrevs(r):
736 740 if p in reachable:
737 reachable[r] = 1
741 if r not in stoprevs:
742 reachable[r] = 1
738 743 heads[r] = 1
739 if p in heads:
744 if p in heads and p not in stoprevs:
740 745 del heads[p]
746
741 747 return [self.node(r) for r in heads]
742 748
743 749 def children(self, node):
@@ -54,4 +54,9 b' hg push -r 3 -r 4 ../c; echo $?'
54 54 hg push -f -r 3 -r 4 ../c; echo $?
55 55 hg push -r 5 ../c; echo $?
56 56
57 # issue 450
58 hg init ../e
59 hg push -r 0 ../e ; echo $?
60 hg push -r 1 ../e ; echo $?
61
57 62 exit 0
@@ -62,3 +62,17 b' adding manifests'
62 62 adding file changes
63 63 added 1 changesets with 1 changes to 1 files (-1 heads)
64 64 0
65 pushing to ../e
66 searching for changes
67 adding changesets
68 adding manifests
69 adding file changes
70 added 1 changesets with 1 changes to 1 files
71 0
72 pushing to ../e
73 searching for changes
74 adding changesets
75 adding manifests
76 adding file changes
77 added 1 changesets with 1 changes to 1 files
78 0
General Comments 0
You need to be logged in to leave comments. Login now