hgext/evolve.py
changeset 900 98b5ac44a259
parent 898 934b6f0feffd
parent 893 12ed6dfa8eea
child 907 c17ab719da56
--- a/hgext/evolve.py	Mon Apr 07 16:41:29 2014 -0700
+++ b/hgext/evolve.py	Sun Apr 13 16:46:13 2014 -0400
@@ -20,6 +20,7 @@
 '''
 
 testedwith = 'default'
+
 buglink = 'https://bitbucket.org/marmoute/mutable-history/issues'
 
 import sys
@@ -1073,7 +1074,7 @@
         ui.write('        mean length:        %9i\n' % mean)
 
 @command('^evolve|stabilize|solve',
-    [('n', 'dry-run', False, 'do not perform actions, print what to be done'),
+    [('n', 'dry-run', False, 'do not perform actions, just print what would be done'),
     ('A', 'any', False, 'evolve any troubled changeset'),
     ('a', 'all', False, 'evolve all troubled changesets'),
     ('c', 'continue', False, 'continue an interrupted evolution'), ],
@@ -1081,13 +1082,13 @@
 def evolve(ui, repo, **opts):
     """Solve trouble in your repository
 
-    - rebase unstable changeset to make it stable again,
-    - create proper diff from bumped changeset,
-    - merge divergent changesets.
+    - rebase unstable changesets to make them stable again,
+    - create proper diffs from bumped changesets,
+    - merge divergent changesets,
     - update to a successor if the working directory parent is
       obsolete
 
-    By default, take the first trouble changeset that looks relevant.
+    By default, takes the first troubled changeset that looks relevant.
 
     (The logic is still a bit fuzzy)
 
@@ -1097,7 +1098,7 @@
 
     - For divergent, this means taking "." if applicable.
 
-    With --any, evolve picks any troubled changeset to solve.
+    With --any, evolve picks any troubled changeset to repair.
 
     The working directory is updated to the newly created revision.
     """
@@ -1536,7 +1537,12 @@
     displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
     if len(parents) == 1:
         p = parents[0]
-        hg.update(repo, p.rev())
+        bm = bookmarks.readcurrent(repo)
+        shouldmove = bm is not None and bookmarks.iscurrent(repo, bm)
+        ret = hg.update(repo, p.rev())
+        if not ret and shouldmove:
+            repo._bookmarks[bm] = p.node()
+            repo._bookmarks.write()
         displayer.show(p)
         return 0
     else:
@@ -1562,7 +1568,12 @@
         return 1
     if len(children) == 1:
         c = children[0]
-        hg.update(repo, c.rev())
+        bm = bookmarks.readcurrent(repo)
+        shouldmove = bm is not None and bookmarks.iscurrent(repo, bm)
+        ret = hg.update(repo, c.rev())
+        if not ret and shouldmove:
+            repo._bookmarks[bm] = c.node()
+            repo._bookmarks.write()
         displayer.show(c)
         return 0
     else:
@@ -1624,22 +1635,22 @@
     _('[OPTION] [-r] REV...'))
     # -U  --noupdate option to prevent wc update and or bookmarks update ?
 def cmdprune(ui, repo, *revs, **opts):
-    """get rid of changesets by marking them obsolete
+    """hide changesets by marking them obsolete
 
     Obsolete changesets becomes invisible to all commands.
 
-    Non-pruned descendant of pruned changesets becomes "unstable". Use the
+    Unpruned descendants of pruned changesets becomes "unstable". Use the
     :hg:`evolve` to handle such situation.
 
-    When the working directory parent is pruned the repository is updated to a
-    non obsolete parents.
+    When the working directory parent is pruned, the repository is updated to a
+    non-obsolete parent.
 
-    You can use the ``--succ`` option to informs mercurial that a newer version
+    You can use the ``--succ`` option to inform mercurial that a newer version
     of the pruned changeset exists.
 
     You can use the ``--biject`` option to specify a 1-1 (bijection) between
     revisions to prune and successor changesets. This option may be removed in
-    a future release (with the functionality absored automatically).
+    a future release (with the functionality absorbed automatically).
 
     """
     revs = set(scmutil.revrange(repo, list(revs) + opts.get('rev')))
@@ -1837,10 +1848,10 @@
 def uncommit(ui, repo, *pats, **opts):
     """move changes from parent revision to working directory
 
-    Changes to selected files in parent revision appear again as
+    Changes to selected files in the checked out revision appear again as
     uncommitted changed in the working directory. A new revision
-    without selected changes is created, becomes the new parent and
-    obsoletes the previous one.
+    without the selected changes is created, becomes the checked out
+    revision, and obsoletes the previous one.
 
     The --include option specifies patterns to uncommit.
     The --exclude option specifies patterns to keep in the commit.
@@ -1921,7 +1932,7 @@
     # allow to choose the seed ?
     _('[-r] revs'))
 def touch(ui, repo, *revs, **opts):
-    """Create successors with exact same property but hash
+    """Create successors that are identical to their predecessors except for the changeset ID
 
     This is used to "resurrect" changesets
     """
@@ -1977,10 +1988,10 @@
 def fold(ui, repo, *revs, **opts):
     """Fold multiple revisions into a single one
 
-    Revision from your current working directory to the specified one are fold
-    as a new one replacing the other
+    The revisions from your current working directory to the given one are folded
+    into a single successor revision.
 
-    you can alternatively use --rev to explicitly specify revision to be fold
+    you can alternatively use --rev to explicitly specify revisions to be folded,
     ignoring the current working directory parent.
     """
     revs = list(revs)