Changeset Evolution Plan

/!\ This page is intended for developers

Proposition for safe rewriting of mercurial history. This will have a close relationship with StatesPlan

1. Core principle

* Store and explicit relation between new and old version of rewritten changeset.

* This relation should *not* be part of the changeset (should not alter the hash).

* People must be able to collaborate on evolving changeset

2. Additional idea

* Save delta in a real changeset.

* This relation should be exchangeable without rewritten changeset.

* Easily allow other extension to manipulate such relation (and to hook on such operation)

3. Situation that should be handled

* Rewriting content of a changeset,

* delete/kill a changeset.

* split a single changeset in multiple one,

* collapse multiple changeset in single one,

* change changeset order,

* adding (eg pulling) a changeset evolution that conflict with another one.

* adding (or adding in general ) new changesets on a one which already evolved (or evolving a changeset that have descendant)