diff -r 731b2a90983b -r 3c8fb24334e9 mercurial/branchmap.py --- a/mercurial/branchmap.py Sat Aug 30 11:39:15 2014 +0200 +++ b/mercurial/branchmap.py Sat Aug 30 12:20:50 2014 +0200 @@ -252,15 +252,11 @@ newheadrevs.sort() bheadset.update(newheadrevs) - # This loop prunes out two kinds of heads - heads that are - # superseded by a head in newheadrevs, and newheadrevs that are not - # heads because an existing head is their descendant. - while newheadrevs: - latest = newheadrevs.pop() - if latest not in bheadset: - continue - ancestors = set(cl.ancestors([latest], min(bheadset))) - bheadset -= ancestors + # This prunes out two kinds of heads - heads that are superseded by + # a head in newheadrevs, and newheadrevs that are not heads because + # an existing head is their descendant. + ancestors = set(cl.ancestors(newheadrevs, min(bheadset))) + bheadset -= ancestors bheadrevs = sorted(bheadset) self[branch] = [cl.node(rev) for rev in bheadrevs] tiprev = bheadrevs[-1]