Changesets Evolution - Obsolescence Markers Cycles
This page is intended for developer
Contents
Creating Cycles
Obsolescence markers can be created and added in any order, so it is possible for two (or more) markers to says:
- A is a predecessors of B
- B is a predecessors of A
That makes both A and B obsolete, and there is not clear successors to either A or B.
=== Distributed Unintentional Creation ==
If two users Alice and Bob creates similar changesets A and B and end up exchanging them. They can each decides to mark their version obsoleted by the other ( A ← B; B ← A). This will happen in a distributed way, in their own repository without communication between the two at the time it happens. The cycle will only appears when both data end up in the same place through exchange.
Using explicit prune
User could locally create cycle using hg prune B --successors A. They could either be aware of the cycle creation or do that without realizing they will create a cycle
Using explicit prune
To be completed
Cycle as a way to revive changesets with the same hash
JunWu has advocated for "hash preserving" way to disable markers on a changesets:
please details here