# HG changeset patch # User Pierre-Yves David # Date 1356346720 -3600 # Node ID f730ed2e093d625bdd267412120ad96aa3403707 # Parent 6a91cbb6790749a7c309de35931578e559e02962 phases: prepare phase command for filtering The phase command have some logic to report change made. We ensure this logic run unfiltered. With --force the command can change phase of a changeset for public to draft. Such change can lead to obsolescence marker to apply again and the changeset to be "hidden". If we do not run the logic unfiltered it could failed to fetch the phase of a newly filtered changeset. diff -r 6a91cbb67907 -r f730ed2e093d mercurial/commands.py --- a/mercurial/commands.py Mon Dec 24 11:57:48 2012 +0100 +++ b/mercurial/commands.py Mon Dec 24 11:58:40 2012 +0100 @@ -4629,9 +4629,12 @@ phases.retractboundary(repo, targetphase, nodes) finally: lock.release() - newdata = repo._phasecache.getphaserevs(repo) - cl = repo.changelog + # moving revision from public to draft may hide them + # We have to check result on an unfiltered repository + unfi = repo.unfiltered() + newdata = repo._phasecache.getphaserevs(unfi) changes = sum(o != newdata[i] for i, o in enumerate(olddata)) + cl = unfi.changelog rejected = [n for n in nodes if newdata[cl.rev(n)] < targetphase] if rejected: