= Changesets Evolution - Obsolescence Markers Cycles = /!\ This page is intended for developer <> == 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 ---- CategoryDeveloper CategoryEvolution