author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
Wed, 08 Aug 2012 16:51:45 +0200 | |
changeset 455 | f46a41006136 |
parent 357 | b398e9c2dbd1 |
child 501 | 9a17c48c2099 |
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 |
----------------------------------------------------- |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
3 |
Implementation of Obsolete Marker |
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 |
.. warning:: This document is still in heavy work in progress |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
6 |
|
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
7 |
Main questions about Obsolete Marker Implementation |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
8 |
----------------------------------------------------- |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
9 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
10 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
11 |
What data should be contained in a Marker ? |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
12 |
```````````````````````````````````````````````````` |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
13 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
14 |
There are two critical pieces of information that **must** be stored |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
15 |
in an obsolete Marker. |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
16 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
17 |
:object: |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
18 |
the old obsoleted changeset |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
19 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
20 |
:replacements: |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
21 |
list of new changeset. list size can be anything, including 0 (0..N) |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
22 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
23 |
Everybody agreed on this point. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
24 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
25 |
--- |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
26 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
27 |
This is probably a good idea to have an unique Identifier, for UI, transfer and |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
28 |
access. |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
29 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
30 |
:id: same as changeset but for marker. |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
31 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
32 |
The field below will depend on the way we exchange obsolete marker between |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
33 |
changesets. |
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
34 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
35 |
--- |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
36 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
37 |
Having audit data will be very useful. When it gets messy you need all the |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
38 |
information available to understand the situation. |
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
39 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
40 |
I have the feeling that we are versioning history. Therefor we will probably |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
41 |
need the same kind of information than when versioning Files. |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
42 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
43 |
:date: date of the marker creation |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
44 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
45 |
:user: ui.username |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
46 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
47 |
To go further: |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
48 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
49 |
:description: "Optional reason for the rewrite (generated by the user)" |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
50 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
51 |
:tool: the automated tool that made this |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
52 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
53 |
:operation: Kind of rewritting operation that created the marker (delete, |
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
54 |
update, split, fold, reordering), to help conflict resolution. |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
55 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
56 |
Matt said this is "too complicated". I'll wait for him to meet a very hairy |
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
57 |
situation to agree that they are needed. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
58 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
59 |
Leaving the door open to any addition data is an option too. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
60 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
61 |
How shall we store Marker on disk |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
62 |
````````````````````````````````````````````````````````` |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
63 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
64 |
Requirement |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
65 |
............. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
66 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
67 |
We need to quickly load the 'object' to know the "obsolete" set. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
68 |
We need quick access by object and replacements to travels along the graph. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
69 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
70 |
Common Part |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
71 |
............. |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
72 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
73 |
The file is store in `.hg/store/obsmarkers`. It is a binary files: |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
74 |
|
247 | 75 |
The files starts with a Format Version string |
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
76 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
77 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
78 |
Minimalistic proposal |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
79 |
......................... |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
80 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
81 |
The core of a Marker will we stored as: |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
82 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
83 |
* number of replacement (8-Bytes integer) |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
84 |
* node id of the obsolete changeset (20-Bytes hash) |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
85 |
* node id of replacement changeset (20-Bytes hash x number of remplacement) |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
86 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
87 |
Version with ID |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
88 |
......................... |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
89 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
90 |
This version add a node id computed from the marker content. It will be present |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
91 |
*before* other data: |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
92 |
|
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
93 |
* node id of the maker (20-Bytes hash) |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
94 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
95 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
96 |
Version with Metadata proposal |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
97 |
............................... |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
98 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
99 |
An extra files is used to old metadata (date, user, etc) `.hg/store/obs-extra`:. |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
100 |
|
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
101 |
The format of this field is undefined yet. This will add the following |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
102 |
field at the end of a marker |
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
103 |
|
246
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
104 |
* offset of the metadata in obs-extra (8-Bytes integer) |
1e8e32d3871c
doc: idea about OnDisk Storage
Pierre-Yves.David@ens-lyon.org
parents:
244
diff
changeset
|
105 |
|
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
106 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
107 |
How shall we exchange Marker over the Wire ? |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
108 |
````````````````````````````````````````````````````````` |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
109 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
110 |
We can have a lot of markers. We do not want to exchange data for the one we |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
111 |
already know. Listkey() is not very appropriate there as you get everything. |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
112 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
113 |
Moreover, we might want to only hear about Marker that impact changeset we are |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
114 |
pulling. |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
115 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
116 |
pushkey is not batchable yet (could be fixed) |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
117 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
118 |
A dedicated discovery and exchange protocol seems mandatory here. |
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
119 |
|
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
120 |
|
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
121 |
Various technical details |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
122 |
----------------------------------------------------- |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
123 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
124 |
Some stuff that worse to note. some may deserve their own section later. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
125 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
126 |
storing old changeset |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
127 |
`````````````````````` |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
128 |
|
244
9d37254031fc
[doc] add Question and Answer about Obsolet Marker Implementation
Pierre-Yves.David@ens-lyon.org
parents:
228
diff
changeset
|
129 |
The new general delta format allows a very efficient storage of two very similar |
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
130 |
changesets. Storing obsolete children using general delta takes no more place |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
131 |
than storing the obsolete diff. Reverted file will even we reused. The whole |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
132 |
operation will take much less space the strip backup. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
133 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
134 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
135 |
Abstraction from history rewriting UI |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
136 |
``````````````````````````````````````````` |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
137 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
138 |
How Mercurial handles obsolete marker is independent from what decides |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
139 |
to create them and what actual operation solves the error case. Any of |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
140 |
the existing history rewriting UI (rebase, mq, histedit) can lay |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
141 |
obsolete markers and resolve situation created by others. To go |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
142 |
further, a hook system of obsolete marker creation would allow each |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
143 |
mechanism to collaborate with other though a standard and central |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
144 |
mechanism. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
145 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
146 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
147 |
Obsolete marker storage |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
148 |
``````````````````````````` |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
149 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
150 |
The Obsolete marker will most likely be stored outside standard |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
151 |
history. They are multiple reasons for this: |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
152 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
153 |
First, obsolete markers are really perpendicular to standard history |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
154 |
there is no strong reason to include it here other than convenience. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
155 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
156 |
Second, storing obsolete marker inside standard history means: |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
157 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
158 |
* A changeset must be created every time an obsolete relation is added. Very |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
159 |
inconvenient for delete operation. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
160 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
161 |
* Obsolete marker must be forged at the creation of the new changeset. This |
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
162 |
is very inconvenient for split operation. And in general it becomes |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
163 |
complicated to fix history afterward in particular when working with older |
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
164 |
clients. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
165 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
166 |
Storing obsolete marker outside history have several pros: |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
167 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
168 |
* It eases Exchange of obsolete markers without unnecessary obsolete |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
169 |
changeset contents. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
170 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
171 |
* It allows tuning the actual storage and protocol exchange while maintaining |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
172 |
compatibility with older clients through the wire (as we do the repository |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
173 |
format). |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
174 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
175 |
* It eases the exchange of obsolete related information during |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
176 |
discovery to exchange obsolete changeset relevant to conflict |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
177 |
resolution. Exchanging such information deserves a dedicated |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
178 |
protocol. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
179 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
180 |
Persistent |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
181 |
``````````````````````` |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
182 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
183 |
*Extinct* changeset and obsolete marker will most likely be garbage collected as |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
184 |
some point. However, archive server may decide to keep them forever in order to |
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
185 |
keep a fully auditable history in its finest conception. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
186 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
187 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
188 |
Current status |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
189 |
----------------------------------------------------- |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
190 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
191 |
An experimental implementatione exists. What have been done so far. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
192 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
193 |
|
228
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
227
diff
changeset
|
194 |
* 1-1 obsolete marker stored outside history, |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
195 |
|
228
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
227
diff
changeset
|
196 |
* compute obsolete-tip |
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
227
diff
changeset
|
197 |
|
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
227
diff
changeset
|
198 |
* obsolete marker exchange through pushkey, |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
199 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
200 |
* compute obsolete, unstable, extinct and suspended set. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
201 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
202 |
* hidden extinct changesets for UI. |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
203 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
204 |
* Use secret phase to remove from discovery obsolete and unstable changesets (to |
228
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
227
diff
changeset
|
205 |
be improved soon) |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
206 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
207 |
* alter rebase to use obsolete markers instead of stripping. |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
208 |
|
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
209 |
* Have an experimental mq-like extension to rewrite history (more on that later) |
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
210 |
|
357
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
211 |
* Have an extension to update and mq repository according evolution of |
b398e9c2dbd1
doc: English proofreading
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
311
diff
changeset
|
212 |
standard (more on that later) |
161
4e3f25ba5401
More doc and index with sphynx
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
213 |