diff --git a/mercurial/phases.py b/mercurial/phases.py index 6b2aeeec3ed001cceef27438543b58fcb0fbdb4e_bWVyY3VyaWFsL3BoYXNlcy5weQ==..c9ceb4f6025690167bdb245e530de6bac8baae95_bWVyY3VyaWFsL3BoYXNlcy5weQ== 100644 --- a/mercurial/phases.py +++ b/mercurial/phases.py @@ -703,6 +703,7 @@ return set() # search for affected high phase changesets and roots + seen = set(new_revs) push = heapq.heappush pop = heapq.heappop parents = cl.parentrevs @@ -735,5 +736,6 @@ # higher phases delroots.add(current) # schedule a walk down if needed - if p1_phase > targetphase: + if p1_phase > targetphase and p1 not in seen: + seen.add(p1) push(revs, -p1) @@ -739,5 +741,6 @@ push(revs, -p1) - if p2_phase > targetphase: + if p2_phase > targetphase and p2 not in seen: + seen.add(p2) push(revs, -p2) if p1_phase < targetphase and p2_phase < targetphase: new_target_roots.add(current)