============================= Mutable History For Mercurial ============================= This repository holds three experimental extensions that introduce concepts related to history rewriting in mercurial. :states: Introduce a state concept. It allows to track which changesets have been made public and immutable and which you want to keep local. :obsolete: Introduce an ``obsolete`` concept that tracks new versions of rewritten changesets. :rewrite: A collection of commands to rewrite the mutable part of the history. **These extensions are experimental and are not meant for production.** See each extension documentation for details Obsolete Extension ====================== state: in progress This extension introduces the *obsolete* concept. It adds a new *obsolete* relation between two changesets. A relation ``<changeset B> obsolete <changeset A>`` is set to denote that ``<changeset B>`` is new version of ``<changeset A>``. The *obsolete* relation act as a **perpendicular history** to the standard changeset history. Standard changeset history versions files. The *obsolete* relation versions changesets. Usage and Feature ------------------ obsolete changesets are hidden. Commands ........ a ``debugobsolete`` command has been added. To Do ----- * do not exchange them * handle non-obsolete children * exchange the obsolete information * refuse to obsolete published changesets * handle split * handle conflict * handle out of sync rewrite Extension ====================== state: To be written