Mercurial > hg
annotate mercurial/help/phases.txt @ 35237:8df8ce2cc5dd
remotenames: add functionality to store remotenames under .hg/hgremotenames/
This patch moves the functionality from remotenames extension to store
remotenames to core.
Storage format used by remotenames extension:
A single file `.hg/remotenames` with an entry in each line where each line is of
format:
`node nametype remotepath/name`
where nametype is either 'bookmarks' or 'branches'.
This was not the best way to store data, so while moving to core the storage
format was changed but yet not the final format. The storage format used by core
after this patch will be:
* A file for each type of name i.e. bookmarks and branches in .hg/remotenames/
directory
* A version number on the top of the file. The version for current format is 0.
* An entry in each line where each line is of the format
`node\0remotepath\0name`
The logic to sync with existing remotenames file and saving journals and other
related things will be moved to core in next patches incrementally.
Thanks to Ryan, Augie and Durham for suggestions on storage format.
Previously reviewed as D939.
Differential Revision: https://phab.mercurial-scm.org/D1548
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Thu, 05 Oct 2017 00:44:38 +0530 |
parents | ff178743e59b |
children |
rev | line source |
---|---|
15996 | 1 What are phases? |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16244
diff
changeset
|
2 ================ |
15996 | 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, | |
16244
3d26d69ef822
help: add verb to sentence in phases.txt
Johan Samyn <johan.samyn@gmail.com>
parents:
16041
diff
changeset
|
17 changeset phases should only be changed towards the public phase. |
15996 | 18 |
19 How are phases managed? | |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16244
diff
changeset
|
20 ======================= |
15996 | 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 | |
34948
ff178743e59b
help: minor copy editing for grammar
Matt Harbison <matt_harbison@yahoo.com>
parents:
27514
diff
changeset
|
31 To make your commits secret by default, put this in your |
27514
311eddddca49
phases: mention how to make secret commits in help
timeless <timeless@mozdev.org>
parents:
20532
diff
changeset
|
32 configuration file:: |
311eddddca49
phases: mention how to make secret commits in help
timeless <timeless@mozdev.org>
parents:
20532
diff
changeset
|
33 |
311eddddca49
phases: mention how to make secret commits in help
timeless <timeless@mozdev.org>
parents:
20532
diff
changeset
|
34 [phases] |
311eddddca49
phases: mention how to make secret commits in help
timeless <timeless@mozdev.org>
parents:
20532
diff
changeset
|
35 new-commit = secret |
311eddddca49
phases: mention how to make secret commits in help
timeless <timeless@mozdev.org>
parents:
20532
diff
changeset
|
36 |
15996 | 37 Phases and servers |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16244
diff
changeset
|
38 ================== |
15996 | 39 |
40 Normally, all servers are ``publishing`` by default. This means:: | |
41 | |
42 - all draft changesets that are pulled or cloned appear in phase | |
43 public on the client | |
44 | |
45 - all draft changesets that are pushed appear as public on both | |
46 client and server | |
47 | |
48 - secret changesets are neither pushed, pulled, or cloned | |
49 | |
50 .. note:: | |
20532
f1a3ae7c15df
help: remove last occurrences of ".. note::" without two newlines
Simon Heimberg <simohe@besonet.ch>
parents:
20299
diff
changeset
|
51 |
15996 | 52 Pulling a draft changeset from a publishing server does not mark it |
53 as public on the server side due to the read-only nature of pull. | |
54 | |
55 Sometimes it may be desirable to push and pull changesets in the draft | |
56 phase to share unfinished work. This can be done by setting a | |
57 repository to disable publishing in its configuration file:: | |
58 | |
59 [phases] | |
16000
25fa240139cb
help: fix publish option spelling in phases topic
Matt Mackall <mpm@selenic.com>
parents:
15998
diff
changeset
|
60 publish = False |
15998
916de764b4f6
help/phases: remove trailing whitespace
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
15996
diff
changeset
|
61 |
19295
73066ba46ec5
doc: reword "config file" to "configuration file"
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
18960
diff
changeset
|
62 See :hg:`help config` for more information on configuration files. |
15996 | 63 |
64 .. note:: | |
20532
f1a3ae7c15df
help: remove last occurrences of ".. note::" without two newlines
Simon Heimberg <simohe@besonet.ch>
parents:
20299
diff
changeset
|
65 |
15996 | 66 Servers running older versions of Mercurial are treated as |
67 publishing. | |
68 | |
20299
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
69 .. note:: |
20532
f1a3ae7c15df
help: remove last occurrences of ".. note::" without two newlines
Simon Heimberg <simohe@besonet.ch>
parents:
20299
diff
changeset
|
70 |
20299
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
71 Changesets in secret phase are not exchanged with the server. This |
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
72 applies to their content: file names, file contents, and changeset |
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
73 metadata. For technical reasons, the identifier (e.g. d825e4025e39) |
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
74 of the secret changeset may be communicated to the server. |
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
75 |
b4b77909318f
phases: add a formal note that hash of secret changeset may leak out
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19959
diff
changeset
|
76 |
16011
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
77 Examples |
17267
979b107eaea2
doc: unify section level between help topics
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16244
diff
changeset
|
78 ======== |
16011
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
79 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
80 - list changesets in draft or secret phase:: |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
81 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
82 hg log -r "not public()" |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
83 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
84 - change all secret changesets to draft:: |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
85 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
86 hg phase --draft "secret()" |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
87 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
88 - forcibly move the current changeset and descendants from public to draft:: |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
89 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
90 hg phase --force --draft . |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
91 |
34948
ff178743e59b
help: minor copy editing for grammar
Matt Harbison <matt_harbison@yahoo.com>
parents:
27514
diff
changeset
|
92 - show a list of changeset revisions and each corresponding phase:: |
16011
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
93 |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
94 hg log --template "{rev} {phase}\n" |
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
95 |
16041
6a959318c58e
phases: add resync example to help topic
Matt Mackall <mpm@selenic.com>
parents:
16011
diff
changeset
|
96 - resynchronize draft changesets relative to a remote repository:: |
6a959318c58e
phases: add resync example to help topic
Matt Mackall <mpm@selenic.com>
parents:
16011
diff
changeset
|
97 |
19959
9ef92384415c
doc: use double quotation mark to quote arguments in examples for Windows users
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19295
diff
changeset
|
98 hg phase -fd "outgoing(URL)" |
16041
6a959318c58e
phases: add resync example to help topic
Matt Mackall <mpm@selenic.com>
parents:
16011
diff
changeset
|
99 |
16011
f2c49d9dee57
help: add examples to phases topic
Matt Mackall <mpm@selenic.com>
parents:
16000
diff
changeset
|
100 See :hg:`help phase` for more information on manually manipulating phases. |