Mercurial > hg
annotate mercurial/helptext/evolution.txt @ 52032:09a54892b7ee
mergestate: reduce the number of attribute lookups
This code is called a lot during updates, this is a very small but also very
easy thing to do.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 21 Aug 2024 09:48:14 +0200 |
parents | da4e6d7a8fdd |
children |
rev | line source |
---|---|
47017
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
1 Obsolescence markers make it possible to mark changesets that have been |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
2 deleted or superseded in a new version of the changeset. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
3 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
4 Unlike the previous way of handling such changes, by stripping the old |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
5 changesets from the repository, obsolescence markers can be propagated |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
6 between repositories. This allows for a safe and simple way of exchanging |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
7 mutable history and altering it after the fact. Changeset phases are |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
8 respected, such that only draft and secret changesets can be altered (see |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
9 :hg:`help phases` for details). |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
10 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
11 Obsolescence is tracked using "obsolescence markers", a piece of metadata |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
12 tracking which changesets have been made obsolete, potential successors for |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
13 a given changeset, the moment the changeset was marked as obsolete, and the |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
14 user who performed the rewriting operation. The markers are stored |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
15 separately from standard changeset data can be exchanged without any of the |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
16 precursor changesets, preventing unnecessary exchange of obsolescence data. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
17 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
18 The complete set of obsolescence markers describes a history of changeset |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
19 modifications that is orthogonal to the repository history of file |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
20 modifications. This changeset history allows for detection and automatic |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
21 resolution of edge cases arising from multiple users rewriting the same part |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
22 of history concurrently. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
23 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
24 Current feature status |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
25 ====================== |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
26 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
27 This feature is still in development. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
28 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
29 Instability |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
30 =========== |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
31 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
32 Rewriting changesets might introduce instability. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
33 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
34 There are two main kinds of instability: orphaning and diverging. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
35 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
36 Orphans are changesets left behind when their ancestors are rewritten. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
37 Divergence has two variants: |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
38 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
39 * Content-divergence occurs when independent rewrites of the same changesets |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
40 lead to different results. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
41 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
42 * Phase-divergence occurs when the old (obsolete) version of a changeset |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
43 becomes public. |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
44 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
45 It is possible to prevent local creation of orphans by using the following config:: |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
46 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
47 [experimental] |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
48 evolution.createmarkers = true |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
49 evolution.exchange = true |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
50 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
51 You can also enable that option explicitly:: |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
52 |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
53 [experimental] |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
54 evolution.createmarkers = true |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
55 evolution.exchange = true |
da4e6d7a8fdd
help: add topic about evolution, based on text from evolve extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff
changeset
|
56 evolution.allowunstable = true |