README
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Fri, 31 Aug 2012 11:30:30 +0200
branchstable
changeset 542 ca5bb72d14ae
parent 541 3859f8e7d0d1
child 555 3704751fa27f
permissions -rw-r--r--
pkg: abstract version in makefile

o============================
Mutable History For Mercurial
=============================


Extends Mercurial feature related to Changeset Evolution

This extension provides several commands to mutate history and deal with
issues it may raise.

It also:

    - enables the "Changeset Obsolescence" feature of mercurial,
    - alters core commands and extensions that rewrite history to use
      this feature,
    - improves some aspect of the early implementation in 2.3

**These extensions are experimental and are not meant for production.**

You can quicky enable it by adding the line below to the extensions
section of you hgrc::

    evolve=PATH/TO/evolve.py

But it's recommended to look at the doc in the first place.

See doc/ directory for details.

Online version of the doc is available:

    http://hg-lab.logilab.org/doc/mutable-history/html/

Contribute
==================

The simplest way to contribute is to issue a pull request on bitbucket.

However, some cutting edge change may be found in a mutable repository hosted
by logilab before they are published.

    http://hg-lab.logilab.org/wip/mutable-history/

Make sure to check lastest draft changeset before submitting new changeset.


Changelog
==================

1.0.1 -- 2012-08-31

- documentation improvement
- fix a performance bug with hgweb

1.0 -- 2012-08-29

- Align with Mercurial version 2.3 (drop 2.2 support).
- stabilize handle killed parent
- stabilize handle late comer
- stabilize handle conflicting
- stabilize get a --continue switch
- merge and update ignore extinct changeset in most case.
- new "troubled()" revset
- summary now reports troubles changesets
- new touch command
- new fold command
- new basic olog alias

- rebase refuse to work on public changeset again
- rebase explicitly state that there is nothing to rebase because everything is
  extinct() when that happen.
- amend now cleanly abort when --change switch is misused


0.7 -- 2012-08-06

- hook: work around insanely huge value in obsolete pushkey call
- pushkey: properly handle abort during obsolete markers push
- amend: wrap the whole process in a single transaction.
- evolve: tweak and add EOL to kill warning
- obsolete: fix doc, rebase no longer aborts with --keep
- obsolete/evolve: fix grammar in prerequisite messages
- evolve: avoid duplication in graft wrapper
- evolve: graft --continue is optional, test

0.6 -- 2012-07-31

- obsolete: change warning output to match mercurial core on
- qsync: ignore unexistent nodes
- make compat server both compatible with "dump" and "dump%i" version

0.5 -- 2012-07-16

- obsolete: Detect conflicting changeset!
- obsolete: adapt to core: marker are written in transaction now
- evolve: add the solve alias to obsolete
- doc: big update of terms and summary of the concept
- evolve: switch the official name for "kill" to prune


0.4.1 -- 2012-07-10

- [convert] properly exclude null successors from convertion
- Ignore buggy marker in newerversion


0.4.0 -- 2012-07-06

- obsolete: public changeset are no longer latecomer.
- obsolete: move to official binary format
- adapt for new mercurial
- obsolete: we are not compatible with 2.1 any more

0.3.0 -- 2012-06-27

- 
- obsolete:  Add "latecomer" error detection (stabilize does not handle resolution yet)
- evolve:    Introduce a new `uncommit` command to remove change from a changeset
- rebase:    allow the use of --keep again
- commit:    --amend option create obsolete marker (but still strip)
- obsolete:  fewer marker are created when collapsing revision.
- revset:    add, successors(), allsuccessors(), precursors(), allprecursors(),
             latecomer() and hidden()
- evolve:    add `prune` alias to `kill`.
- stabilize: clearly state that stabilize does nto handle conflict
- template:  add an {obsolete} keyword

0.2.0 -- 2012-06-20

- stabilize: improve choice of the next changeset to stabilize
- stabilize: improve resolution of several corner case
- rebase:    handle removing empty changesets
- rebase:    handle --collapse
- evolve:   add `obsolete` alias to `kill`
- evolve:   add `evolve` alias to `stabilize`