Differences between revisions 18 and 22 (spanning 4 versions)
Revision 18 as of 2016-06-13 16:04:06
Size: 2548
Editor: GregorySzorc
Comment: update link to doc
Revision 22 as of 2017-01-03 15:38:54
Size: 2651
Comment: update the warning to make it less scary
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
/!\ This feature is experimental, to be used only by experienced Mercurial users that understand the underlying concepts (i) This extension enable and enhance the inprogress ChangesetEvolution work. See the dedicated page for details before using it.
Line 11: Line 11:
Code repository: http://hg.netv6.net/evolve-main/
Code repository: https://www.mercurial-scm.org/repo/evolve/
Line 29: Line 30:
 uncommit:: extracts changes from a commit into the working directory
 fold:: gathers changes from multiple changesets into a single one

 prune:: discards changesets (using obsolescence markers)
 touch:: replaces a changeset with a different one containing the same payload, but with a different hash
 prev:: moves to the parent of the current changeset
 next:: moves to the child of the current changeset
 uncommit:: extracts changes from a commit into the working directory,
 fold:: gathers changes from multiple changesets into a single one,
 split:: dispatch changes from a single changesets into multiple one,

 prune:: discards changesets (using obsolescence markers),
 touch:: replaces a changeset with a different one containing the same payload, but with a different hash,
 prev:: moves to the parent of the current changeset,
 next:: moves to the child of the current changeset,
Line 46: Line 48:
$ hg clone http://hg.netv6.net/evolve-main/ $ hg clone https://www.mercurial-scm.org/repo/evolve/
Line 52: Line 54:
evolve = <dir>/evolve-main/hgext/evolve.py evolve = <dir>/evolve/hgext/evolve.py

Evolve Extension

This extension is not distributed along with Mercurial releases

Author: Pierre-Yves David for Various company

(i) This extension enable and enhance the inprogress ChangesetEvolution work. See the dedicated page for details before using it.

Code repository: https://www.mercurial-scm.org/repo/evolve/

1. Introduction

The evolve extension is an experimental implementation of the ChangesetEvolution concept. Most of its content has been moved into core except:

  • additional history rewriting commands
  • the evolve command to automatically solve troubles
  • some user interface warning messages related to obsolete changeset troubles

/!\ The evolve extension enables the ChangesetEvolution feature, changing some of Mercurial's default behavior.

  • history rewriting commands do not strip changesets anymore; they make them obsolete.
  • history rewriting commands will work on any changesets, possibly creating unstable changesets.
  • pull and push exchange obsolescence data with other evolve-enabled repositories - this may have a performance impact!

Current official Documentation: https://www.mercurial-scm.org/doc/evolution/

2. Additional Commands

uncommit
extracts changes from a commit into the working directory,
fold
gathers changes from multiple changesets into a single one,
split
dispatch changes from a single changesets into multiple one,
prune
discards changesets (using obsolescence markers),
touch
replaces a changeset with a different one containing the same payload, but with a different hash,
prev
moves to the parent of the current changeset,
next
moves to the child of the current changeset,
evolve
automatically resolves troubles affecting changesets

3. Additional UI Messages

  • a warning is issued when the current working directory parent becomes obsolete
  • a warning is issued when a command results in more troubled changesets

4. Setup

First you have to download the extension code. Pick a directory <dir> in your working environment, cd into that and clone evolve. Like this:

$ cd <dir>
$ hg clone https://www.mercurial-scm.org/repo/evolve/

Then configure your .hgrc to enable the extension by adding the following lines (remember to replace <dir> with the path where you just cloned the extension):

[extensions]
evolve = <dir>/evolve/hgext/evolve.py

/!\ We have various compatibility branch (check hg branches), but we recommend using evolve with the latest Stable mercurial version

EvolveExtension (last edited 2017-08-30 12:42:33 by RyanMcElroy)