Sync with -stable

This commit is contained in:
Matt Mackall 2006-12-17 21:48:22 -06:00
commit 887599574c
5 changed files with 31 additions and 5 deletions

View File

@ -1,3 +1,4 @@
35fb62a3a673d5322f6274a44ba6456e5e4b3b37 0 iD8DBQBEYmO2ywK+sNU5EO8RAnaYAKCO7x15xUn5mnhqWNXqk/ehlhRt2QCfRDfY0LrUq2q4oK/KypuJYPHgq1A=
2be3001847cb18a23c403439d9e7d0ace30804e9 0 iD8DBQBExUbjywK+sNU5EO8RAhzxAKCtyHAQUzcTSZTqlfJ0by6vhREwWQCghaQFHfkfN0l9/40EowNhuMOKnJk=
36a957364b1b89c150f2d0e60a99befe0ee08bd3 0 iD8DBQBFfL2QywK+sNU5EO8RAjYFAKCoGlaWRTeMsjdmxAjUYx6diZxOBwCfY6IpBYsKvPTwB3oktnPt5Rmrlys=
27230c29bfec36d5540fbe1c976810aefecfd1d2 0 iD8DBQBFheweywK+sNU5EO8RAt7VAKCrqJQWT2/uo2RWf0ZI4bLp6v82jACgjrMdsaTbxRsypcmEsdPhlG6/8F4=

View File

@ -1284,7 +1284,7 @@ class localrepository(repo.repository):
newheads = list(heads)
for r in remote_heads:
if r in self.changelog.nodemap:
desc = self.changelog.heads(r)
desc = self.changelog.heads(r, heads)
l = [h for h in heads if h in desc]
if not l:
newheads.append(r)

View File

@ -716,15 +716,19 @@ class revlog(object):
assert heads
return (orderedout, roots, heads)
def heads(self, start=None):
def heads(self, start=None, stop=None):
"""return the list of all nodes that have no children
if start is specified, only heads that are descendants of
start will be returned
if stop is specified, it will consider all the revs from stop
as if they had no children
"""
if start is None:
start = nullid
if stop is None:
stop = []
stoprevs = dict.fromkeys([self.rev(n) for n in stop])
startrev = self.rev(start)
reachable = {startrev: 1}
heads = {startrev: 1}
@ -733,10 +737,12 @@ class revlog(object):
for r in xrange(startrev + 1, self.count()):
for p in parentrevs(r):
if p in reachable:
reachable[r] = 1
if r not in stoprevs:
reachable[r] = 1
heads[r] = 1
if p in heads:
if p in heads and p not in stoprevs:
del heads[p]
return [self.node(r) for r in heads]
def children(self, node):

View File

@ -54,4 +54,9 @@ hg push -r 3 -r 4 ../c; echo $?
hg push -f -r 3 -r 4 ../c; echo $?
hg push -r 5 ../c; echo $?
# issue 450
hg init ../e
hg push -r 0 ../e ; echo $?
hg push -r 1 ../e ; echo $?
exit 0

View File

@ -62,3 +62,17 @@ adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (-1 heads)
0
pushing to ../e
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
0
pushing to ../e
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
0