author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
Fri, 26 Aug 2022 11:36:20 +0100 | |
branch | stable |
changeset 49446 | 8c75ae3f0eea |
parent 47017 | da4e6d7a8fdd |
permissions | -rw-r--r-- |
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 |