# HG changeset patch # User Martin von Zweigbergk # Date 1529594531 25200 # Node ID 05b7dd11918e925c9331e2c7414ca98a035be663 # Parent d6686f864a707773bae6134a4beec0e6e08ccc57 cleanupnodes: preserve phase of parents of new nodes As Yuya noted in the review of D3818, passing in targetphase=phases.draft would result in advancing the phase boundary of a secret-phase parent. We never pass targetphase=phases.draft so far, but it's a bug waiting to happen. I tried to refactor it so max(parentphase, X) happened in one place, but I couldn't come up with good variables names and I ended up with a "newphase = max(newphase, parentphase)" line, which made the whole block not look any better to me. Differential Revision: https://phab.mercurial-scm.org/D3824 diff -r d6686f864a70 -r 05b7dd11918e mercurial/scmutil.py --- a/mercurial/scmutil.py Sat Jun 16 18:36:25 2018 +0530 +++ b/mercurial/scmutil.py Thu Jun 21 08:22:11 2018 -0700 @@ -842,13 +842,13 @@ return newphases.get(ctx.node(), ctx.phase()) for newnode in allnewnodes: ctx = unfi[newnode] + parentphase = max(phase(p) for p in ctx.parents()) if targetphase is None: oldphase = max(unfi[oldnode].phase() for oldnode in precursors[newnode]) - parentphase = max(phase(p) for p in ctx.parents()) newphase = max(oldphase, parentphase) else: - newphase = targetphase + newphase = max(targetphase, parentphase) newphases[newnode] = newphase if newphase > ctx.phase(): toretract.setdefault(newphase, []).append(newnode)