Mercurial > hg
annotate mercurial/helptext/evolution.txt @ 50317:af776c3d5c3e stable
debugdeltachain: stop summing the same chain over and over
Before this patch, delta chain size was computed from scratch for each chain,
disregarding the fact very likely already computed the same of length-1 prefix
for another revisions.
We not cache delta chain size and shortcut the computation when we see them.
Just for my mercurial-devel clone, this move the computation from about 17.5
second to about 4.8 seconds.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 21 Mar 2023 15:44:38 +0000 |
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 |