README
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Mon, 12 Sep 2011 23:47:06 +0200
changeset 63 f47a5f990eb2
parent 59 02fba620d139
child 70 af4f7ef0a3c1
permissions -rw-r--r--
[states] add rebase support.

=============================
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