comparison README @ 35:0f98f87881bd

Spelling fixes
author Julien Cristau <julien.cristau@logilab.fr>
date Mon, 01 Aug 2011 15:11:45 +0200
parents f28116682827
children 6531b01b2763
comparison
equal deleted inserted replaced
34:f28116682827 35:0f98f87881bd
1 ============================= 1 =============================
2 Mutable History For Mercurial 2 Mutable History For Mercurial
3 ============================= 3 =============================
4 4
5 This repository hold several experimental extension that introduce concept 5 This repository holds three experimental extensions that introduce concepts
6 related to history rewriting in mercurial. You will find three different 6 related to history rewriting in mercurial.
7 extensions.
8 7
9 :states: 8 :states:
10 9
11 Introduce a state concept. It allow to track which changeset have been make 10 Introduce a state concept. It allows to track which changesets have been
12 public and immutable and which you want to keep local. 11 made public and immutable and which you want to keep local.
13 12
14 :obsolete: 13 :obsolete:
15 14
16 Introduce an obsolete concept that track new version of rewritten changeset. 15 Introduce an ``obsolete`` concept that tracks new versions of rewritten
16 changesets.
17 17
18 :rewrite: 18 :rewrite:
19 A collection of command to rewrite the mutable part of the history. 19 A collection of commands to rewrite the mutable part of the history.
20 20
21 21
22 22
23 **These extensions are experimental and are not meant for production.** 23 **These extensions are experimental and are not meant for production.**
24 24
25 25
26 States Extension 26 States Extension
27 ====================== 27 ================
28 28
29 state: experimentally functional 29 state: experimentally functional
30 30
31 (see http://mercurial.selenic.com/wiki/StatesPlan) 31 (see http://mercurial.selenic.com/wiki/StatesPlan)
32 32
33 This extension the state concept. A changeset now have one of the following *state*: 33 This extension adds the state concept. A changeset now has one of the following
34 *states*:
34 35
35 :published: 36 :published:
36 37
37 Changeset in the ``published`` state are the core of the history. They are 38 Changesets in the ``published`` state are the core of the history. They are
38 changeset that you published to the world. People can expect them to always 39 changesets that you published to the world. People can expect them to always
39 be exist. This is changeset as you know them. **By default all changeset 40 exist. They are changesets as you know them. **By default all changesets
40 are published** 41 are published**
41 42
42 * They are exchanged with other repository (included in pull//push). 43 * They are exchanged with other repositories (included in pull//push).
43 44
44 * They are not mutable, extension rewriting history should refuse to 45 * They are not mutable, extensions rewriting history should refuse to
45 rewrite them. 46 rewrite them.
46 47
47 :ready: 48 :ready:
48 49
49 Changeset in the ``ready`` state have not been accepted in the immutable 50 Changesets in the ``ready`` state have not yet been accepted in the
50 history yet. You can share them with other for review, testing or 51 immutable history. You can share them with others for review, testing or
51 improvement. Any ``ready`` changeset can either be included in the 52 improvement. Any ``ready`` changeset can either be included in the
52 published history (and become immutable) or be rewritten and rever make it 53 published history (and become immutable) or be rewritten and never make it
53 the published history. 54 to the published history.
54 55
55 * They are exchanged with other repository (included in pull//push). 56 * They are exchanged with other repositories (included in pull//push).
56 * They are mutable, extension rewriting history accept to work on them. 57 * They are mutable, extensions rewriting history accept to work on them.
57 58
58 :draft: 59 :draft:
59 60
60 Changeset in the ``draft`` state are heavy work in progress you are 61 Changesets in the ``draft`` state are heavy work in progress you are not
61 currently working on without willing to share with other. 62 yet willing to share with others.
62 63
63 * They are not exchanged with other repository. pull//push does not see them. 64 * They are not exchanged with other repositories. pull//push do not see them.
64 * They are mutable, extension rewriting history accept to work on them. 65 * They are mutable, extensions rewriting history accept to work on them.
65 66
66 67
67 State of changeset have to be consistent with each other. A ``published`` 68 States of changesets have to be consistent with each other. A ``published``
68 changeset can only have ``published`` ancestors. A ``ready`` changeset can only 69 changeset can only have ``published`` ancestors. A ``ready`` changeset can only
69 have ``published`` or ready ancestor. 70 have ``published`` or ``ready`` ancestors.
70 71
71 72
72 Usage and Feature 73 Usage and Feature
73 ------------------ 74 ------------------
74 75
75 By default all changeset in the repository are ``published``. Other state must 76 By default all changesets in the repository are ``published``. Other states must
76 be explicitly activated. When a state is not activated, changeset of this state 77 be explicitly activated. When a state is not activated, changesets in this state
77 are handled as changeset of the state before him. (``draft`` are handled as 78 are handled as changesets of the state before it (``draft`` are handled as
78 ``ready``, ``ready`` are handled as ``published``) 79 ``ready``, ``ready`` are handled as ``published``).
79 80
80 Changeset will automatically move to ``published`` state when: 81 Changesets will automatically move to ``published`` state when:
81 82
82 * pushed to a repo that doesn't support ``ready`` state. 83 * pushed to a repo that doesn't support the ``ready`` state.
83 84
84 * Tagged by a non local tag. 85 * Tagged by a non local tag.
85 86
86 Commands 87 Commands
87 ........ 88 ........
88 89
89 The extension add and ``hg states`` command to choose which state are used by a 90 The extension adds a ``hg states`` command to choose which states are used by a
90 repository, see ``hg help states for details``. 91 repository, see ``hg help states for details``.
91 92
92 A command is also added for all active states. The command have the name of the 93 A command is also added for each active state. The command has the name of the
93 states and is used to manually change the state of a changeset. This is mainly 94 state and is used to manually change the state of a changeset. This is mainly
94 usefull to move changeset from ``draft`` to ``ready``.:: 95 useful to move changesets from ``draft`` to ``ready``.::
95 96
96 hg ready tip 97 hg ready tip
97 98
98 Template 99 Template
99 ........ 100 ........
100 101
101 A new template keyword ``{state}`` have been added 102 A new template keyword ``{state}`` has been added.
102 103
103 Revset 104 Revset
104 ........ 105 ........
105 106
106 We add a new ``readyheads()`` and ``publishedheads()`` revset directive. This return the heads of each states **as if all of them was activated**. 107 We add new ``readyheads()`` and ``publishedheads()`` revset directives. This
108 returns the heads of each state **as if all of them were activated**.
107 109
108 FAQ 110 FAQ
109 --- 111 ---
110 112
111 Why to you store activate state ouside ``.hg/hgrc`` 113 Why to you store activate state outside ``.hg/hgrc``?
112 .................................................... 114 .....................................................
113 115
114 ``.hg/hgrc`` might be ignored for trust reason. we don't want the 116 ``.hg/hgrc`` might be ignored for trust reason. we don't want the # XXX
115 117
116 Why is the ``dead`` state missing 118 Why is the ``dead`` state missing?
117 .................................................... 119 .....................................................
118 120
119 1. The ``dead`` state have a different behaviour that require more work to be 121 1. The ``dead`` state has a different behaviour that requires more work to be
120 implemented 122 implemented.
121 123
122 2. I believe that the usecase of ``dead changeset`` are better covered by the 124 2. I believe that the use cases of ``dead changeset`` are better covered by the
123 ``obsolete`` extension. 125 ``obsolete`` extension.
124 126
125 To Do 127 To Do
126 ----- 128 -----
127 129
128 * Moving boundary backward (code existist in ``liquid`` extension done at the 130 * Moving boundary backward (code exists in the ``liquid`` extension done at the
129 CPH sprint) 131 CPH sprint)
130 132
131 * support for default value in configuration (when for init and clone) 133 * support for default value in configuration (for init and clone)
132 134
133 * stronger pull//push support (unknown remote head confuse the current code) 135 * stronger pull//push support (unknown remote heads confuse the current code)
134 136
135 * display the number of changeset that change state when activating a state. 137 * display the number of changesets that change state when activating a state.
136 138
137 * have a switch to select if changeset do change state on state activation. 139 * have a switch to select if changesets do change state on state activation.
138 140
139 * proper revset directive. 141 * proper revset directive.
140 142
141 143
142 144
144 Obsolete Extension 146 Obsolete Extension
145 ====================== 147 ======================
146 148
147 state: in progress 149 state: in progress
148 150
149 This extension introduce the *obsolete* concept. It adds a new *obsolete* relation between two changeset. A relation ``<changeset B> obsolete <changeset A>`` is set to denote that ``<changeset B>`` is new version of ``<changeset A>`` 151 This extension introduces the *obsolete* concept. It adds a new *obsolete*
152 relation between two changesets. A relation ``<changeset B> obsolete <changeset
153 A>`` is set to denote that ``<changeset B>`` is new version of ``<changeset
154 A>``.
150 155
151 The *obsolete* relation act as a **perpendicular history** to the standard 156 The *obsolete* relation act as a **perpendicular history** to the standard
152 changeset history. Standard changeset history versions files. When *obsolete* 157 changeset history. Standard changeset history versions files. The *obsolete*
153 relation versions changeset 158 relation versions changesets.
154 159
155 Usage and Feature 160 Usage and Feature
156 ------------------ 161 ------------------
157 162
158 obsolete changeset are hidden. 163 obsolete changesets are hidden.
159 164
160 Commands 165 Commands
161 ........ 166 ........
162 167
163 168
164 a ``debugobsolete`` command have been added. 169 a ``debugobsolete`` command has been added.
165 170
166 171
167 To Do 172 To Do
168 ----- 173 -----
169 174
171 176
172 * handle non-obsolete children 177 * handle non-obsolete children
173 178
174 * exchange the obsolete information 179 * exchange the obsolete information
175 180
176 * refuse to obsolete published changeset 181 * refuse to obsolete published changesets
177 182
178 * handle split 183 * handle split
179 184
180 * handle conflict 185 * handle conflict
181 186