diff -r c6289ec369cb -r 78debdfb3e4d docs/index.rst --- a/docs/index.rst Tue Aug 29 16:14:28 2017 +0200 +++ b/docs/index.rst Tue Aug 29 16:15:02 2017 +0200 @@ -20,33 +20,21 @@ commit new changesets to modify your source code, but you cannot modify or remove old changesets. -For years, Mercurial has included various extensions that allow -history modification: ``rebase``, ``mq``, ``histedit``, and so forth. -These are useful and popular extensions, and in fact history -modification is one of the big reasons DVCSes (distributed version -control systems) like Mercurial took off. - +For years, Mercurial has included various commands that allow +history modification: ``rebase``, ``histedit``, ``commit --amend`` and so forth. But there's a catch: until now, Mercurial's various mechanisms for modifying history have been *unsafe*, in that changesets were destroyed (“stripped”) rather than simply made hidden. -``evolve`` makes things better in a couple of ways: +``evolve`` makes things better by changing the behaviour of most existing +history modification commands so they use a safer mechanism (*changeset +obsolescence*, covered below) rather than the older, less safe *strip* +operation. - * It changes the behaviour of most existing history modification - extensions (``rebase``, ``histedit``, etc.) so they use a safer - mechanism (*changeset obsolescence*, covered below) rather than - the older, less safe *strip* operation. - - * It provides a new way of modifying history that is roughly - equivalent to ``mq`` (but much nicer and safer). - -It helps to understand that ``evolve`` builds on infrastructure -already in core Mercurial: +``evolve`` is built on infrastructure in core Mercurial: * *Phases* (starting in Mercurial 2.1) allow you to distinguish - mutable and immutable changesets. We'll cover phases early in the - user guide, since understanding phases is essential to - understanding ``evolve``. + mutable and immutable changesets. * *Changeset obsolescence* (starting in Mercurial 2.3) is how Mercurial knows how history has been modified, specifically when @@ -54,8 +42,7 @@ changeset is neither removed nor modified, but is instead marked *obsolete* and typically replaced by a *successor*. Obsolete changesets usually become *hidden* as well. Obsolescence is an - invisible feature until you start using ``evolve``, so we'll cover - it in the user guide too. + invisible feature in Mercurial until you start using ``evolve``. Some of the things you can do with ``evolve`` are: