docs/index.rst
changeset 2881 9b270ce3763b
parent 2880 a75b4109239b
child 2882 4b7252600e57
equal deleted inserted replaced
2880:a75b4109239b 2881:9b270ce3763b
    53    user-guide
    53    user-guide
    54    sharing
    54    sharing
    55    concepts
    55    concepts
    56    from-mq
    56    from-mq
    57 
    57 
    58 Why the ``evolve`` extension
    58 What is Changeset Evolution ?
    59 ----------------------------
    59 -----------------------------
    60 
    60 
    61 With core Mercurial, changesets are permanent and immutable. You can
    61 With core Mercurial, changesets are permanent and immutable. You can
    62 commit new changesets to modify your source code, but you cannot
    62 commit new changesets to modify your source code, but you cannot
    63 modify or remove old changesets.
    63 modify or remove old changesets.
    64 
    64 
    82     Mercurial knows how history has been modified, specifically when
    82     Mercurial knows how history has been modified, specifically when
    83     one changeset replaces another. In the obsolescence model, a
    83     one changeset replaces another. In the obsolescence model, a
    84     changeset is neither removed nor modified, but is instead marked
    84     changeset is neither removed nor modified, but is instead marked
    85     *obsolete* and typically replaced by a *successor*. Obsolete
    85     *obsolete* and typically replaced by a *successor*. Obsolete
    86     changesets usually become *hidden* as well. Obsolescence is an
    86     changesets usually become *hidden* as well. Obsolescence is an
    87     invisible feature in Mercurial until you start using ``evolve``.
    87     disabled feature in Mercurial until you start using ``evolve``.
    88 
    88 
    89 Some of the things you can do with ``evolve`` are:
    89 Some of the things you can do with ``evolve`` are:
    90 
    90 
    91   * Fix a mistake immediately: “Oops! I just committed a changeset
    91   * Fix a mistake immediately: “Oops! I just committed a changeset
    92     with a syntax error—I'll fix that and amend the changeset so no
    92     with a syntax error—I'll fix that and amend the changeset so no
    93     one sees my mistake.” (While this is possible using existing
    93     one sees my mistake.” (While this is possible using default
    94     features of core Mercurial, ``evolve`` makes it safer.)
    94     features of core Mercurial, changeset evolution makes it safer.)
    95 
    95 
    96   * Fix a mistake a little bit later: “Oops! I broke the tests three
    96   * Fix a mistake a little bit later: “Oops! I broke the tests three
    97     commits back, but only noticed it now—I'll just update back to the
    97     commits back, but only noticed it now—I'll just update back to the
    98     bad changeset, fix my mistake, amend the changeset, and evolve
    98     bad changeset, fix my mistake, amend the changeset, and evolve
    99     history to update the affected changesets.”
    99     history to update the affected changesets.”
   111 
   111 
   112   * Share mutable history for code review: you don't want to publish
   112   * Share mutable history for code review: you don't want to publish
   113     unreviewed changesets, but you can't block every commit waiting
   113     unreviewed changesets, but you can't block every commit waiting
   114     for code review. The solution is to share mutable history with
   114     for code review. The solution is to share mutable history with
   115     your reviewer, amending each changeset until it passes review.
   115     your reviewer, amending each changeset until it passes review.
       
   116 
       
   117   * Explore and audit the rewrite history of a changeset. Since Mercurial is
       
   118     tracking the edition you make to a changeset, you can look at the history of
       
   119     these editions. This is similar to Mercurial tracking the history of a file
       
   120     edition, but at the changeset level.
   116 
   121 
   117 ``evolve`` is experimental!
   122 ``evolve`` is experimental!
   118 ---------------------------
   123 ---------------------------
   119 
   124 
   120 The long-term plan for ``evolve`` is to add it to core Mercurial.
   125 The long-term plan for ``evolve`` is to add it to core Mercurial.