README
author Pierre-Yves David <pierre-yves.david@fb.com>
Wed, 12 Mar 2014 12:44:33 -0700
changeset 882 48804a8d7472
parent 862 f954e331d511
child 919 ffce88754767
permissions -rw-r--r--
simple4server: option to advertise obsolescence support We had an option to control the advertising of the obsolescence markers support from the server. The goal of this option is to allow large scale repo hosting service to control the use of obsolescence markers exchange.

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

This package supplies the ``evolve`` extension for Mercurial, which
provides several commands to mutate history and deal with the
resulting issues.

It also:

    - enables the "changeset obsolescence" feature of Mercurial
    - issues several warning messages when trouble appears in your repository

**This extension is experimental and not yet meant for production.**

You can enable it by adding the line below to the ``extensions``
section of your hgrc::

    evolve = PATH/TO/mutable-history/hgext/evolve.py

We recommend reading the documentation first. An online version is
available here:

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

Or see the ``doc/`` directory for a local copy.

Contribute
==========

The simplest way to contribute is to issue a pull request on Bitbucket
(https://bitbucket.org/marmoute/mutable-history).

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

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

Be sure to check latest draft changeset before submitting new changesets.


Changelog
=========

3.4.0 --

- added Augie Facklers `fastop` extension (usage not recommended yet)
- added progress support to obsolescence markers pushing
- added multiple output during obsolescence marrkers exchange
- record parent of pruned parent at prune time
- only push markers relevant to pushed subset
- only pull markers relevant to pulled subset (if server support)
- added progress support for push and pull of markers over wire protocol

3.3.0 -- 2014-03-04

- add verbose hint about how to handle corner case by hand.
  This should help people until evolve is able to to it itself.
- removed the qsync extension. The only user I knew about (logilab) is not
  using it anymore. It not compatible with coming Mercurial version 2.9.
- add progress indicator for long evolve command
- report troubles creation from `hg import`

3.2.0 -- 2013-11-15

- conform to the Mercurial custom of lowercase messages
- added a small extension to experiment with obsolescence marker push
- amend: drop the deprecated note option
- amend: use core mechanism for amend (fix multiple bugs)
- parents command: add "working directory parent is obsolete" message
- evolve command: allow updating to the successor if the parent is
  obsolete
- gdown and gup commands: add next and previous alias, respectively
- make grab aliases compatible with Mercurial 2.8
- Tested with 2.6, 2.7 and 2.8

3.1.0 -- 2013-02-11

- amend: drop deprecated --change option for amend
- alias: add a grab aliast to be used instead of graft -O
- touch: add a --duplicate option to *not* obsolete the old version
- touch: fix touching multiple revision at the same time
- evolve: add a --all option
- prune: various minor improvements
- prune: add option to prune a specific bookmark
- prune: add -u and -d option to control metadata

3.0.0 -- 2013-02-02

- compatibility with 2.5

2.2.0 --

- make evolve smarter at picking next troubled to solved without --any

2.1.0 -- 2012-12-03

- qsync fixes
- have qfold ask for commit message

2.0.0 -- 2012-10-26

- compat with mercurial 2.4

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`