Phases

1. Introduction

The phase concept improves safety of history rewriting and control over changesets exchanged (read more). This phase concept aims to "just works" in a transparent manner for any user (read more). It is part of Core and always enabled in any new client but doesn't prevent older client to work on a repository (read more). Advanced user may decides to handle phase manually (read more).

Like bookmarks, phases are not stored in history and thus are not permanent and leave no audit trail.

This concept is introduced in Mercurial 2.1.

2. Available Phases

The phase concept allow to:

To achieve this, are three phases sharing a hierarchy of traits:

immutable

shared

public

x

x

draft

x

secret

* The public phases holds changeset announced publicly in. They are expect to

* The draft phase holds changesets that was not expect marked as part of

* The secret phase holds changeset that you do not want to exchange with

Phases split the history in coherent set of changeset. Every changeset in a phase have ancestor in a phase compatible with its phase. Compatible means an changeset ancestors have at least the same traits that the children changeset. eg: A shared changeset alway have shared ancestor and an immutable changeset always have immutable ancestors.

In other word the phase of a changeset is alway equal of higher that the phase of it's descendant. According to the following order:

A changeset is not expected to automatically move from a lower phase to an higher phase (eg: from public to draft) but automatic

3. Phase Movements

4. command line interface

4.1. core command

4.2. impact on extension

5. Publishing Repository

6. Upgrade Notes


(If you were looking to the developer oriented page: PhaseDevel)