diff -r 5c86af0da91d -r ec04eb4d2c6e README --- a/README Tue Feb 28 17:08:14 2017 +0100 +++ b/README Tue Mar 14 14:52:56 2017 -0700 @@ -2,94 +2,168 @@ 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. +Evolve Extension +================= + +This package supplies the ``evolve`` extension for Mercurial, -It also: +**The full implementation of the changeset evolution concept is still in +progress.** Please subscribe to the `evolve-testers mailing list +`_ to stay up to +date with changes. + +This extension: - - enables the "changeset obsolescence" feature of Mercurial - - issues several warning messages when trouble appears in your repository +* enables the “changeset evolution” feature of Mercurial core, -**This extension is experimental and not yet meant for production.** +* provides a set of commands to mutate your history, + +* issues several warning messages when troubles from some mutable appears in + your repository, -You can enable it by adding the line below to the ``extensions`` -section of your hgrc:: +* provides an ``hg evolve`` command to deal with such "troubles", - evolve = PATH/TO/evolve-main/hgext/evolve.py +* improves performance of obsolescence marker exchanges and discovery during + push and pull. + +Documentation +------------- We recommend reading the documentation first. An online version is available here: https://www.mercurial-scm.org/doc/evolution/ -Or see the ``doc/`` directory for a local copy. +How to Install +============== + +Using Pip +--------- + +You can install the latest evolution version usin pip:: + + $ pip install --user hg-evolve + +Then just enable it in you hgrc:: + + $ hg config --edit # adds the two line below: + [extensions] + evolve = + +From Source +----------- + +To install a local version from source:: + + $ hg clone https://www.mercurial-scm.org/repo/evolve/ + $ cd evolve + $ make install-home -Contribute -========== +Then just enable it in you hgrc:: + + $ hg config --edit # adds the two line below: + [extensions] + evolve = + +Documentation lives in ``doc/``. + +Server Only Version +=================== -Bugs are to be reported on the mercurial's bug tracker (component: evolution): -https://bz.mercurial-scm.org/buglist.cgi?component=evolution&query_format=advanced&resolution=--- +It is possible to enable a smaller subset of the extensions aimed at server +serving repository. It skips the additions of the new commands and local UI +messages that might add performance overheads. To use the server only +extension, install the package and use:: + + $ hg config --edit # adds the two line below: + [extensions] + evolve.serveronly = + + +How to Contribute +================= + +Bugs are to be reported on the mercurial's bug tracker (component: `evolution`_): + +.. _evolution: https://bz.mercurial-scm.org/buglist.cgi?component=evolution&query_format=advanced&resolution=--- Please use the patchbomb extension to send email to mercurial devel. Please make sure to use the evolve-ext flag when doing so. You can use a command like -this: +this:: - hg email --to mercurial-devel@mercurial-scm.org --flag evolve-ext --rev '' + $ hg email --to mercurial-devel@mercurial-scm.org --flag evolve-ext --rev '' -See also -https://mercurial-scm.org/wiki/ContributingChanges#Patch_descriptions -for guidelines on the patch description. +For guidelines on the patch description, see the `official Mercurial guideline`_. + +.. _`official Mercurial guideline`: https://mercurial-scm.org/wiki/ContributingChanges#Patch_descriptions Please don't forget to update and run the tests when you fix a bug or add a feature. To run the tests, you need a working copy of Mercurial, -say in $HGSRC: +say in $HGSRC:: - cd tests - python $HGSRC/tests/run-tests.py + $ cd tests + $ python $HGSRC/tests/run-tests.py (evolve's stable and default branches correspond to Mercurial's stable and default branches. So to test evolve from default, you need -Mercurial on default.) - +Mercurial on default.), Older version of Mercurial are supportd on their respective ``mercurial-x.y`` branches. Changelog ========= -5.6.1 -- 2017-02-28 +6.0.0 -- In progress +-------------------- - - fix a crash that sometime happened when evolving merges. +- drop compatibility for Mercurial < 3.8, +- removed old (unpackaged) pushexperiment extension, +- move all extensions in the official 'hgext3rd' namespace package, +- add the "topic" experimental extensions. See the README.topic file for details +- officially ship 'evolve.serveronly' extensions. That extensions contains + only the part related to exchange and is intended to be used by server. + + Using the extension will enable evolution, use 'experimental.evolution=!' + to disable obsmarkers echange. The old '__temporary__.advertiseobsolete' + option is no longer supported. + +5.6.1 -- 2017-02-28 +------------------- + +- fix a crash that sometime happened when evolving merges. 5.6.0 -- 2017-02-01 +------------------- - - compatibility with Mercurial 4.1. - - improvement of prune error message. - - fold: require --from flag for folding revisions to working copy - - fix crash when trying to fold an empty revision set (issue5453) - - uncommit: preserve copy information of remaining files (issue5403) +- compatibility with Mercurial 4.1. +- improvement of prune error message. +- fold: require --from flag for folding revisions to working copy +- fix crash when trying to fold an empty revision set (issue5453) +- uncommit: preserve copy information of remaining files (issue5403) 5.5.0 -- 2016-10-30 +------------------- - - The {obsolete} template now yield "obsolete" or "". - - compatibility with Mercurial 4.0 - - Fix erroneous manifest computation when solving 'bumped' changeset. - - split: avoid crash on empty commit (issue5191), - - next: improve locking to avoid issue with working copy parent (issue5244) - - prev: improve locking to avoid issue with working copy parent (issue5244) - - evolve: fix abort suggestion to include '.' in 'hg update -C .' +- The {obsolete} template now yield "obsolete" or "". +- compatibility with Mercurial 4.0 +- Fix erroneous manifest computation when solving 'bumped' changeset. +- split: avoid crash on empty commit (issue5191), +- next: improve locking to avoid issue with working copy parent (issue5244) +- prev: improve locking to avoid issue with working copy parent (issue5244) +- evolve: fix abort suggestion to include '.' in 'hg update -C .' 5.4.1 -- 2016-08-01 +------------------- - compat with Mercurial 3.9 5.4.0 -- 2016-05-06 +------------------- - Some collaboration with the topic experimental extensions, - hg evolve --all with consider all troubles in your current topic, - preserve 'topic' during evolve, - 'next' and 'prev' restrict themself to the current topic by default, - remove the dangerous 'kill' alias for 'prune' (because 'hg kill -1' without -the leading 'hg' will give you an hardtime) + the leading 'hg' will give you an hardtime) - during 'hg evolve' skip unsupported merge instead of aborting - various documentation fix and update - hg summary now suggest 'hg evolve --continue when appropriate` @@ -98,6 +172,7 @@ - add a 'metaedit' command to rewrite changeset meta data. 5.3.0 -- 2016-02-11 +------------------- - split: add a new command to split changesets, - tests: drop our copy of 'run-tests.py' use core one instead, @@ -113,6 +188,7 @@ - updated help for the `evolve` command 5.2.1 -- 2015-11-02 +------------------- - add compatibility with Mercurial 3.6 - prune: fixed possible issue with lock and bookmark @@ -121,6 +197,7 @@ - take advantage of dirstate/transaction collaboration 5.2.0 -- 2015-06-25 +------------------- - evolve: gain a --rev option to control what revisions to evolve (issue4391) - evolve: revision are processed in the order they stack on destination @@ -140,6 +217,7 @@ - next: add a --evolve flag to evolve aspiring children when on a head 5.1.5 -- 2015-06-23 +------------------- - minor documentation cleanup - support -i option for `hg amend` if commit supports it (3.4) @@ -154,6 +232,7 @@ parent. 5.1.4 -- 2015-04-23 +------------------- - significant documentation update - fix issue4616: pulling with bundle2 would crash if common marker when @@ -161,6 +240,7 @@ - fix the debugobsrelsethashtree command 5.1.3 -- 2015-04-20 +------------------- - discovery: fix misbehaving discovery across python version - pull: properly install the bundle2 par generator @@ -169,26 +249,31 @@ - graft: avoid potential deadlock (acquires wlock before lock) 5.1.2 -- 2015-04-01 +------------------- - evolve: prevent a crash in httpclient_pushobsmarkers() when pushing 5.1.1 -- 2015-03-05 +------------------- - debugobsconvert: fix invalid markers during conversion - discovery: cache some of the obs hash computation to improve performance (issue4518) - revset: fix some crash with (issue4515) 5.1 -- 2015-01-30 +------------------- - evolve: explicitly disable bookmark on evolve (issue4432) - evolve: don't abort Mercurial on version mismatch - compatibility with mercurial 3.3 5.0.2 -- 2014-12-14 +------------------- - evolve: remove dependency to the rebase extension 5.0.1 -- 2014-11-25 +------------------- - amend: fix --logfile argument - evolve: preserve branch change when evolving @@ -199,9 +284,8 @@ - evolve: make next/prev only move bookmarks optionally - evolve: tell user which "base of divergent changeset" is not found - - 5.0.0 -- 2014-10-22 +------------------- - drop compat with Mercurial pre 3.2 - uncommit: add a --rev argument @@ -217,6 +301,7 @@ 4.1.0 -- 2014-08-08 +------------------- - amend: add -D/--current-date option - amend: add -U/--current-user option @@ -230,10 +315,12 @@ `experimental.verbose-obsolescence-exchange` variable (default to False). 4.0.1 -- 2014-08-08 +------------------- - createmarkers() accept an iterable (for compat with other extension) 4.0.0 -- 2014-06-03 +------------------- - require Mercurial version 3.0.1 or above - some compatibility fixes with future 3.1.0 @@ -247,13 +334,16 @@ - added multiple output during obsolescence markers exchange - only push markers relevant to pushed subset - add a new experimental way to exchange marker (when server support): + - added progress when pulling obsmarkers - only pull markers relevant to pulled subset - avoid exchanging common markers in some case - use bundle2 as transport when available. + - add a hook related to the new commands 3.3.2 -- 2014-05-14 +------------------- - fix a bug where evolve were creating changeset with 2 parents on windows (fix issues #16, #35 and #42) @@ -263,6 +353,7 @@ - fold: add squash as an alias 3.3.1 -- 2014-04-23 +------------------- - various language fix - active bookmark now move when using prev/next (#37) @@ -271,6 +362,7 @@ - fold: enable --date and --user options 3.3.0 -- 2014-03-04 +------------------- - raise Mercurial's minimal requirement to 2.7 - drop `latercomer` and `conflicting` compatibility. Those old alias are @@ -283,6 +375,7 @@ - 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 @@ -296,6 +389,7 @@ - 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 alias to be used instead of graft -O @@ -307,23 +401,28 @@ - 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 @@ -331,6 +430,7 @@ - smarter divergent handling 1.0.2 -- 2012-09-19 +------------------- - fix hg fold bug - fix hg pull --rebase @@ -338,11 +438,13 @@ - 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 @@ -363,6 +465,7 @@ 0.7 -- 2012-08-06 +------------------- - hook: work around insanely huge value in obsolete pushkey call - pushkey: properly handle abort during obsolete markers push @@ -374,12 +477,14 @@ - evolve: graft --continue is optional, test 0.6 -- 2012-07-31 +------------------- - obsolete: change warning output to match mercurial core on - qsync: ignore nonexistent 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 @@ -389,12 +494,14 @@ 0.4.1 -- 2012-07-10 +------------------- - [convert] properly exclude null successors from conversion - Ignore buggy marker in newerversion 0.4.0 -- 2012-07-06 +------------------- - obsolete: public changeset are no longer latecomer. - obsolete: move to official binary format @@ -402,6 +509,7 @@ - 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 @@ -415,6 +523,7 @@ - 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 @@ -422,5 +531,3 @@ - rebase: handle --collapse - evolve: add `obsolete` alias to `kill` - evolve: add `evolve` alias to `stabilize` - -