author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
Mon, 26 Mar 2012 18:24:39 +0200 | |
changeset 165 | ef6113f3d38e |
parent 164 | c81d286c4a5b |
child 166 | 8f8a52cd0b9f |
permissions | -rw-r--r-- |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
1 |
======================================== |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
2 |
Safe Mutable History |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
3 |
======================================== |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
4 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
5 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
6 |
Here are various Materials on planned improvement to mercurial regarding |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
7 |
rewriting mutable history. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
8 |
|
164
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
9 |
The effort split in two part: |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
10 |
|
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
11 |
* The **obsolete marker** concept aiming to provide and alternative to strip to |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
12 |
get ride of changesets. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
13 |
|
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
14 |
* A mercurial extension: **evolve** that rewrite using *obsolete marker* |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
15 |
under the hood. |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
16 |
|
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
17 |
|
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
18 |
regarding mercurial internals, the first and most important step is the |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
19 |
**obsolete marker**. However most user will never be directly exposed to the |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
20 |
concept. For this reason document about changeset evolution are put first. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
21 |
|
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
22 |
|
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
23 |
Evolve: A robust alternative to MQ |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
24 |
==================================== |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
25 |
|
164
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
26 |
Evolve is an experimental history rewriting extensions that use the obsolete |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
27 |
marker. It is inspired from MQ and pbranch but have multiple advantage over |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
28 |
them. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
29 |
|
164
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
30 |
* sticks to "Work where you are" philosophy (I'll need better wording |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
31 |
for that) |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
32 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
33 |
* Handle any kind history. Even history with branch and merge. |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
34 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
35 |
* Use robust mercurial's merge mechanism |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
36 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
37 |
simple conflict are handled by real merge tools using appropriate ancestor. |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
38 |
Conflict are much rarer and much more user friendly. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
39 |
|
164
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
40 |
* All mutable history available at the same time |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
41 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
42 |
You are do not need to unapply and apply patche to access various part of you |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
43 |
history. |
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
44 |
|
164
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
45 |
* Use plain changeset only. Evole create and exchange real changeset only. |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
46 |
Mutable history can be used in all usual operation 'pull, push, log, diff …) |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
47 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
48 |
* Allow sharing and collaborating mutable history without fear of duplicate. |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
49 |
(thanks to obsolete marker). |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
50 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
51 |
* Cover all mq usage but guard. |
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
52 |
|
c81d286c4a5b
improved intro about evolve
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
163
diff
changeset
|
53 |
.. warning:: The evolve extention and the obsolete marker are at an experimental |
163
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
54 |
stage. While using obsolet you'll likely be exposed to complexe |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
55 |
implication of the **obsolete marker** concept. I do not recommend |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
56 |
non power user to test this at this stage. |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
57 |
|
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
58 |
Production ready version should hide such details to normal user. |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
59 |
|
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
60 |
To enable the evolve extension use:: |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
61 |
|
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
62 |
$ hg clone http://hg-dev.octopoid.net/hgwebdir.cgi/mutable-history/ |
92b073d13f2d
more doc update
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
161
diff
changeset
|
63 |
$ mutable-history/enable.sh > ~/.hgrc |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
64 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
65 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
66 |
.. toctree:: |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
67 |
:maxdepth: 1 |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
68 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
69 |
tutorial |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
70 |
evolve-faq |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
71 |
from-mq |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
72 |
|
165
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
73 |
Smart changeset deletion: Obselete Marker |
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
74 |
========================================== |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
75 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
76 |
for dev and advanced user |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
77 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
78 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
79 |
.. toctree:: |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
80 |
:maxdepth: 1 |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
81 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
82 |
obs-concept |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
83 |
glossary |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
84 |
obs-implementation |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
85 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
86 |
|
165
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
87 |
|
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
88 |
|
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
89 |
|
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
90 |
|
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
91 |
Know canveas |
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
92 |
================================= |
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
93 |
|
ef6113f3d38e
title reorganisation
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
164
diff
changeset
|
94 |
Big flashy warning on current remaining issue |