branch heads: fix regression introduced in 084c96645721 (issue1726)

For merge nodes it is not adequate to only check a single possible
branch head for whether it is an ancestor of the latest head, but it
needs to be done for each possible branch head.
This commit is contained in:
Henrik Stuart 2009-07-09 20:49:02 +02:00
parent 2f4412b3b9
commit a44e9f8977
3 changed files with 32 additions and 1 deletions

View File

@ -473,7 +473,9 @@ class localrepository(repo.repository):
latest = newnodes.pop()
if latest not in bheads:
continue
reachable = self.changelog.reachable(latest, bheads[0])
reachable = set()
for bh in bheads:
reachable |= self.changelog.reachable(latest, bh)
bheads = [b for b in bheads if b not in reachable]
newbheads.insert(0, latest)
bheads.extend(newbheads)

View File

@ -185,6 +185,18 @@ echo % fetch should succeed
hg --cwd ib2 fetch ../ib1
rm -fr ib1 ib2
echo % test issue1726
hg init i1726r1
echo a > i1726r1/a
hg --cwd i1726r1 ci -Am base
hg clone i1726r1 i1726r2
echo b > i1726r1/a
hg --cwd i1726r1 ci -m second
echo c > i1726r2/a
hg --cwd i1726r2 ci -m third
HGMERGE=true hg --cwd i1726r2 fetch ../i1726r1 | sed 's/new changeset 3:[0-9a-zA-Z]\+/new changeset 3/'
hg --cwd i1726r2 heads default --template '{rev}\n'
"$TESTDIR/killdaemons.py"
true

View File

@ -190,3 +190,20 @@ updating working directory
pulling from ../ib1
searching for changes
no changes found
% test issue1726
adding a
updating working directory
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
pulling from ../i1726r1
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
updating to 2:7837755a2789
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
merging with 1:d1f0c6c48ebd
merging a
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
new changeset 3 merges remote changes with local
3