--- 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)