=============================
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.1.0 -- 2012-10-26
- fix troubles creation reporting from rebase
- rename latecomer to bumped
- renamed conflicting to divergent
- smarter divergent handling
1.0.2 -- 2012-09-19
- fix hg fold bug
- fix hg pull --rebase
- fix detection of conflict with external tools
- adapt to core movement (caches and --amend)
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`