mercurial/helptext/evolution.txt
author Pierre-Yves David <pierre-yves.david@octobus.net>
Thu, 24 Nov 2022 04:04:19 +0100
branchstable
changeset 49609 31b4675ca998
parent 47058 da4e6d7a8fdd
permissions -rw-r--r--
emitrevision: if we need to compute a delta on the fly, try p1 or p2 first Falling back to `prev` does not yield any real value on modern storage and result in pathological changes to be created on the other side. Doing a delta against a parent will likely be smaller (helping the network) and will be safer to apply on the client (helping future pulls by Triggering intermediate snapshop where they will be needed by later deltas).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47058
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