mutable-history / README

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


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:


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.

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


 -- 1.1.0

- fix troubles creation reporting from rebase
- rename latecomer to bumped
- renamed conflicting to divergent
- smarter divergent handling

1.0.2 --

- 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`
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.