The default phase for commit is draft , that they were processed when no phases existed. When you click the draft changeset, Mercury automatically changes its phase to public . You can use it to find out what changes you have already posted or not.
But the real problem is that when the changeset is in the public phase, mercurial will not let you change them with history editing extensions (e.g. mq , rebase , etc.). This is very important, because editing history only occurs in the local repository, they are not distributed using pull / push operations. Thus, after the publication of a set of changes, it gets out of control, it is dangerous to change it.
You can go from any phase to any other phase. A "normal stream" is a transition to a higher phase (secret-> draft-> public), but Mercurial allows you to switch to a lower phase with the --force option. Phase change alone is harmless. For example, the only thing that happens when switching from public to draft or secret is that protection for editing history is discarded, nothing else, pull and push will not work fine, Mercurial can never be confused because they have unique identifiers. A story editing action that occurs after a phase change like this can cause problems. And that's why Mercurial gives a warning when the phase changes and requires the --force option, as confirmation of what you really want.
In general, published commits do not change, which is what the phases are trying to provide. But perhaps you have control over all the repositories. Or maybe you pushed something, and you know that no one has pulled it yet. Whatever the reason, you have the option to force the phase of the change sets back into the draft and edit them. But this edition has to be done in every repository with changesets.
Rafael piccolo
source share