15996
|
1 What are phases?
|
|
2 ----------------
|
|
3
|
|
4 Phases are a system for tracking which changesets have been or should
|
|
5 be shared. This helps prevent common mistakes when modifying history
|
|
6 (for instance, with the mq or rebase extensions).
|
|
7
|
|
8 Each changeset in a repository is in one of the following phases:
|
|
9
|
|
10 - public : changeset is visible on a public server
|
|
11 - draft : changeset is not yet published
|
|
12 - secret : changeset should not be pushed, pulled, or cloned
|
|
13
|
|
14 These phases are ordered (public < draft < secret) and no changeset
|
|
15 can be in a lower phase than its ancestors. For instance, if a
|
|
16 changeset is public, all its ancestors are also public. Lastly,
|
|
17 changeset phases only be changed towards the public phase.
|
|
18
|
|
19 How are phases managed?
|
|
20 -----------------------
|
|
21
|
|
22 For the most part, phases should work transparently. By default, a
|
|
23 changeset is created in the draft phase and is moved into the public
|
|
24 phase when it is pushed to another repository.
|
|
25
|
|
26 Once changesets become public, extensions like mq and rebase will
|
|
27 refuse to operate on them to prevent creating duplicate changesets.
|
|
28 Phases can also be manually manipulated with the :hg:`phase` command
|
|
29 if needed. See :hg:`help -v phase` for examples.
|
|
30
|
|
31 Phases and servers
|
|
32 ------------------
|
|
33
|
|
34 Normally, all servers are ``publishing`` by default. This means::
|
|
35
|
|
36 - all draft changesets that are pulled or cloned appear in phase
|
|
37 public on the client
|
|
38
|
|
39 - all draft changesets that are pushed appear as public on both
|
|
40 client and server
|
|
41
|
|
42 - secret changesets are neither pushed, pulled, or cloned
|
|
43
|
|
44 .. note::
|
|
45 Pulling a draft changeset from a publishing server does not mark it
|
|
46 as public on the server side due to the read-only nature of pull.
|
|
47
|
|
48 Sometimes it may be desirable to push and pull changesets in the draft
|
|
49 phase to share unfinished work. This can be done by setting a
|
|
50 repository to disable publishing in its configuration file::
|
|
51
|
|
52 [phases]
|
|
53 publishing = False
|
|
54
|
|
55 See :hg:`help config` for more information on config files.
|
|
56
|
|
57 .. note::
|
|
58 Servers running older versions of Mercurial are treated as
|
|
59 publishing.
|
|
60
|
|
61 See :hg:`help phase` for information on manually manipulating phases.
|