Show More
@@ -0,0 +1,56 b'' | |||||
|
1 | Obsolescence markers make it possible to mark changesets that have been | |||
|
2 | deleted or superseded in a new version of the changeset. | |||
|
3 | ||||
|
4 | Unlike the previous way of handling such changes, by stripping the old | |||
|
5 | changesets from the repository, obsolescence markers can be propagated | |||
|
6 | between repositories. This allows for a safe and simple way of exchanging | |||
|
7 | mutable history and altering it after the fact. Changeset phases are | |||
|
8 | respected, such that only draft and secret changesets can be altered (see | |||
|
9 | :hg:`help phases` for details). | |||
|
10 | ||||
|
11 | Obsolescence is tracked using "obsolescence markers", a piece of metadata | |||
|
12 | tracking which changesets have been made obsolete, potential successors for | |||
|
13 | a given changeset, the moment the changeset was marked as obsolete, and the | |||
|
14 | user who performed the rewriting operation. The markers are stored | |||
|
15 | separately from standard changeset data can be exchanged without any of the | |||
|
16 | precursor changesets, preventing unnecessary exchange of obsolescence data. | |||
|
17 | ||||
|
18 | The complete set of obsolescence markers describes a history of changeset | |||
|
19 | modifications that is orthogonal to the repository history of file | |||
|
20 | modifications. This changeset history allows for detection and automatic | |||
|
21 | resolution of edge cases arising from multiple users rewriting the same part | |||
|
22 | of history concurrently. | |||
|
23 | ||||
|
24 | Current feature status | |||
|
25 | ====================== | |||
|
26 | ||||
|
27 | This feature is still in development. | |||
|
28 | ||||
|
29 | Instability | |||
|
30 | =========== | |||
|
31 | ||||
|
32 | Rewriting changesets might introduce instability. | |||
|
33 | ||||
|
34 | There are two main kinds of instability: orphaning and diverging. | |||
|
35 | ||||
|
36 | Orphans are changesets left behind when their ancestors are rewritten. | |||
|
37 | Divergence has two variants: | |||
|
38 | ||||
|
39 | * Content-divergence occurs when independent rewrites of the same changesets | |||
|
40 | lead to different results. | |||
|
41 | ||||
|
42 | * Phase-divergence occurs when the old (obsolete) version of a changeset | |||
|
43 | becomes public. | |||
|
44 | ||||
|
45 | It is possible to prevent local creation of orphans by using the following config:: | |||
|
46 | ||||
|
47 | [experimental] | |||
|
48 | evolution.createmarkers = true | |||
|
49 | evolution.exchange = true | |||
|
50 | ||||
|
51 | You can also enable that option explicitly:: | |||
|
52 | ||||
|
53 | [experimental] | |||
|
54 | evolution.createmarkers = true | |||
|
55 | evolution.exchange = true | |||
|
56 | evolution.allowunstable = true |
@@ -540,6 +540,12 b' helptable = sorted(' | |||||
540 | TOPIC_CATEGORY_CONCEPTS, |
|
540 | TOPIC_CATEGORY_CONCEPTS, | |
541 | ), |
|
541 | ), | |
542 | ( |
|
542 | ( | |
|
543 | [b"evolution"], | |||
|
544 | _(b"Safely rewriting history (EXPERIMENTAL)"), | |||
|
545 | loaddoc(b'evolution'), | |||
|
546 | TOPIC_CATEGORY_CONCEPTS, | |||
|
547 | ), | |||
|
548 | ( | |||
543 | [b'scripting'], |
|
549 | [b'scripting'], | |
544 | _(b'Using Mercurial from scripts and automation'), |
|
550 | _(b'Using Mercurial from scripts and automation'), | |
545 | loaddoc(b'scripting'), |
|
551 | loaddoc(b'scripting'), |
@@ -419,6 +419,7 b' Testing -h/--help:' | |||||
419 | Concepts: |
|
419 | Concepts: | |
420 |
|
420 | |||
421 | bundlespec Bundle File Formats |
|
421 | bundlespec Bundle File Formats | |
|
422 | evolution Safely rewriting history (EXPERIMENTAL) | |||
422 | glossary Glossary |
|
423 | glossary Glossary | |
423 | phases Working with Phases |
|
424 | phases Working with Phases | |
424 | subrepos Subrepositories |
|
425 | subrepos Subrepositories | |
@@ -552,6 +553,7 b' Testing -h/--help:' | |||||
552 | Concepts: |
|
553 | Concepts: | |
553 |
|
554 | |||
554 | bundlespec Bundle File Formats |
|
555 | bundlespec Bundle File Formats | |
|
556 | evolution Safely rewriting history (EXPERIMENTAL) | |||
555 | glossary Glossary |
|
557 | glossary Glossary | |
556 | phases Working with Phases |
|
558 | phases Working with Phases | |
557 | subrepos Subrepositories |
|
559 | subrepos Subrepositories |
@@ -117,6 +117,7 b' Test hiding some commands (which also ha' | |||||
117 | Concepts: |
|
117 | Concepts: | |
118 |
|
118 | |||
119 | bundlespec Bundle File Formats |
|
119 | bundlespec Bundle File Formats | |
|
120 | evolution Safely rewriting history (EXPERIMENTAL) | |||
120 | glossary Glossary |
|
121 | glossary Glossary | |
121 | phases Working with Phases |
|
122 | phases Working with Phases | |
122 | subrepos Subrepositories |
|
123 | subrepos Subrepositories | |
@@ -254,6 +255,7 b' Test hiding some topics.' | |||||
254 | Concepts: |
|
255 | Concepts: | |
255 |
|
256 | |||
256 | bundlespec Bundle File Formats |
|
257 | bundlespec Bundle File Formats | |
|
258 | evolution Safely rewriting history (EXPERIMENTAL) | |||
257 | glossary Glossary |
|
259 | glossary Glossary | |
258 | phases Working with Phases |
|
260 | phases Working with Phases | |
259 | subrepos Subrepositories |
|
261 | subrepos Subrepositories |
@@ -169,6 +169,7 b' the extension is unknown.' | |||||
169 | Concepts: |
|
169 | Concepts: | |
170 |
|
170 | |||
171 | bundlespec Bundle File Formats |
|
171 | bundlespec Bundle File Formats | |
|
172 | evolution Safely rewriting history (EXPERIMENTAL) | |||
172 | glossary Glossary |
|
173 | glossary Glossary | |
173 | phases Working with Phases |
|
174 | phases Working with Phases | |
174 | subrepos Subrepositories |
|
175 | subrepos Subrepositories | |
@@ -298,6 +299,7 b' the extension is unknown.' | |||||
298 | Concepts: |
|
299 | Concepts: | |
299 |
|
300 | |||
300 | bundlespec Bundle File Formats |
|
301 | bundlespec Bundle File Formats | |
|
302 | evolution Safely rewriting history (EXPERIMENTAL) | |||
301 | glossary Glossary |
|
303 | glossary Glossary | |
302 | phases Working with Phases |
|
304 | phases Working with Phases | |
303 | subrepos Subrepositories |
|
305 | subrepos Subrepositories | |
@@ -2274,6 +2276,13 b' Dish up an empty repo; serve it cold.' | |||||
2274 | Environment Variables |
|
2276 | Environment Variables | |
2275 | </td></tr> |
|
2277 | </td></tr> | |
2276 | <tr><td> |
|
2278 | <tr><td> | |
|
2279 | <a href="/help/evolution"> | |||
|
2280 | evolution | |||
|
2281 | </a> | |||
|
2282 | </td><td> | |||
|
2283 | Safely rewriting history (EXPERIMENTAL) | |||
|
2284 | </td></tr> | |||
|
2285 | <tr><td> | |||
2277 | <a href="/help/extensions"> |
|
2286 | <a href="/help/extensions"> | |
2278 | extensions |
|
2287 | extensions | |
2279 | </a> |
|
2288 | </a> |
@@ -2272,6 +2272,10 b' help/ shows help topics' | |||||
2272 | "topic": "environment" |
|
2272 | "topic": "environment" | |
2273 | }, |
|
2273 | }, | |
2274 | { |
|
2274 | { | |
|
2275 | "summary": "Safely rewriting history (EXPERIMENTAL)", | |||
|
2276 | "topic": "evolution" | |||
|
2277 | }, | |||
|
2278 | { | |||
2275 | "summary": "Using Additional Features", |
|
2279 | "summary": "Using Additional Features", | |
2276 | "topic": "extensions" |
|
2280 | "topic": "extensions" | |
2277 | }, |
|
2281 | }, |
General Comments 0
You need to be logged in to leave comments.
Login now