changeset 3749:44542ac10170

branching: merge with branch for stable
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 21 May 2018 16:56:52 +0200
parents 8fe8152ff071 (diff) 9fa3585b160f (current diff)
children 85ad555d6ff7
files
diffstat 14 files changed, 219 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/evolvecmd.py	Sat May 19 18:26:36 2018 +0530
+++ b/hgext3rd/evolve/evolvecmd.py	Mon May 21 16:56:52 2018 +0200
@@ -338,7 +338,10 @@
     """
     repo = repo.unfiltered()
     divergent = repo[divergent.rev()]
+    evolvestate['divergent'] = divergent.node()
     base, others = divergentdata(divergent)
+
+    # we don't handle split in content-divergence yet
     if len(others) > 1:
         othersstr = "[%s]" % (','.join([str(i) for i in others]))
         msg = _("skipping %d:%s with a changeset that got split"
@@ -355,6 +358,9 @@
         ui.write_err(msg)
         return (False, '')
     other = others[0]
+    evolvestate['other-divergent'] = other.node()
+
+    # we don't handle merge content-divergent changesets yet
     if len(other.parents()) > 1:
         msg = _("skipping %s: %s changeset can't be "
                 "a merge (yet)\n") % (divergent, TROUBLES['CONTENTDIVERGENT'])
@@ -364,6 +370,8 @@
                  "| `hg prune` to kill older version.\n")
         ui.write_err(hint)
         return (False, '')
+
+    # we don't handle content-divergent changesets with different parents yet
     if other.p1() not in divergent.parents():
         msg = _("skipping %s: have a different parent than %s "
                 "(not handled yet)\n") % (divergent, other)
@@ -400,9 +408,12 @@
                  % divergent))
         return (False, '')
     if divergent not in repo[None].parents():
-        repo.ui.status(_('updating to "local" conflict\n'))
-        hg.update(repo, divergent.rev())
-    repo.ui.note(_('merging %s changeset\n') % TROUBLES['CONTENTDIVERGENT'])
+        repo.ui.status(_("updating to \"local\" side of the conflict: %s\n") %
+                       divergent.hex()[:12])
+        hg.updaterepo(repo, divergent.node(), False)
+    # merging the two content-divergent changesets
+    repo.ui.status(_("merging \"other\" %s changeset '%s'\n") %
+                   (TROUBLES['CONTENTDIVERGENT'], other.hex()[:12]))
     if progresscb:
         progresscb()
     stats = merge.update(repo,
@@ -412,18 +423,21 @@
                          ancestor=base.node(),
                          mergeancestor=True)
     hg._showstats(repo, stats)
+
+    # conflicts while merging content-divergent changesets
     if compat.hasconflict(stats):
-        repo.ui.status(_("use 'hg resolve' to retry unresolved file merges "
-                         "or 'hg update -C .' to abort\n"))
-        raise error.Abort('merge conflict between several amendments '
-                          '(this is not automated yet)',
-                          hint="""/!\ You can try:
-/!\ * manual merge + resolve => new cset X
-/!\ * hg up to the parent of the amended changeset (which are named W and Z)
-/!\ * hg revert --all -r X
-/!\ * hg ci -m "same message as the amended changeset" => new cset Y
-/!\ * hg prune -n Y W Z
-""")
+        evolvestate.save()
+        raise error.Abort(_("fix conflicts and run 'hg evolve --continue' or"
+                            " use 'hg update -C .' to abort"))
+
+    return _completecontentdivergent(ui, repo, progresscb, divergent, other,
+                                     evolvestate)
+
+def _completecontentdivergent(ui, repo, progresscb, divergent, other,
+                              evolvestate):
+    """completes the content-divergence resolution"""
+    # no conflicts were there in merging content divergent changesets, let's
+    # resume resolution
     if progresscb:
         progresscb()
     emtpycommitallowed = repo.ui.backupconfig('ui', 'allowemptycommit')
@@ -434,12 +448,20 @@
         with repo.dirstate.parentchange():
             repo.dirstate.setparents(divergent.node(), node.nullid)
         oldlen = len(repo)
+        # temporary hack because we can't use cmdrewrite.amend() during an
+        # interrupted evolve
+        evolvestate.delete()
+
+        # XXX: we should not use amend here, rather create a new commit
         cmdrewrite.amend(ui, repo, message='', logfile='')
+        # XXX: we can get rid of this len() call also by creating a new commit
         if oldlen == len(repo):
             new = divergent
             # no changes
         else:
             new = repo['.']
+
+        # creating markers and moving phases post-resolution
         obsolete.createmarkers(repo, [(other, (new,))], operation='evolve')
         phases.retractboundary(repo, tr, other.phase(), [new.node()])
         return (True, new.node())
@@ -1349,6 +1371,18 @@
             _completeorphan(ui, repo, evolvestate)
         elif evolvestate['category'] == 'phasedivergent':
             _completephasedivergent(ui, repo, evolvestate)
+        elif evolvestate['category'] == 'contentdivergent':
+            tr = None
+            try:
+                tr = repo.transaction('evolve')
+                repo = repo.unfiltered()
+                _completecontentdivergent(ui, repo, progresscb,
+                                          repo[evolvestate['divergent']],
+                                          repo[evolvestate['other-divergent']],
+                                          evolvestate)
+                tr.close()
+            finally:
+                tr.release()
         else:
             repo.ui.status(_("continuing interrupted '%s' resolution is not yet"
                              " supported\n") % evolvestate['category'])
--- a/hgext3rd/evolve/metadata.py	Sat May 19 18:26:36 2018 +0530
+++ b/hgext3rd/evolve/metadata.py	Mon May 21 16:56:52 2018 +0200
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-__version__ = '8.0.1.dev'
+__version__ = '8.1.0.dev'
 testedwith = '4.3.2 4.4.2 4.5.2 4.6'
 minimumhgversion = '4.3'
 buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/evolve/obshistory.py	Sat May 19 18:26:36 2018 +0530
+++ b/hgext3rd/evolve/obshistory.py	Mon May 21 16:56:52 2018 +0200
@@ -101,15 +101,25 @@
     We display the node, description (if available) and various information
     about obsolescence markers affecting it"""
 
+    def __init__(self, ui, repo, differ=None, diffopts=None, buffered=False):
+        super(obsmarker_printer, self).__init__(ui, repo, differ=differ, diffopts=diffopts, buffered=buffered)
+
+        # Compat 4.6
+        if not util.safehasattr(self, "_includediff"):
+            self._includediff = diffopts and diffopts.get('patch')
+        # print("PATCH", diffopts, self._includediff)
+
+        self.template = diffopts and diffopts.get('template')
+
     def show(self, ctx, copies=None, matchfn=None, **props):
         if self.buffered:
             self.ui.pushbuffer(labeled=True)
 
             changenode = ctx.node()
 
-            _props = self.diffopts.copy()
-            _props.update(props)
+            _props = {"template": self.template}
             fm = self.ui.formatter('debugobshistory', _props)
+
             _debugobshistorydisplaynode(fm, self.repo, changenode)
 
             # Succs markers
@@ -117,9 +127,11 @@
             succs = sorted(succs)
 
             markerfm = fm.nested("markers")
+
             for successor in succs:
                 _debugobshistorydisplaymarker(markerfm, successor,
-                                              ctx.node(), self.repo, self.diffopts)
+                                              ctx.node(), self.repo,
+                                              self._includediff)
             markerfm.end()
 
             markerfm.plain('\n')
@@ -373,7 +385,8 @@
 
         markerfm = fm.nested("markers")
         for successor in sorted(succs):
-            _debugobshistorydisplaymarker(markerfm, successor, ctxnode, unfi, opts)
+            includediff = opts and opts.get("patch")
+            _debugobshistorydisplaymarker(markerfm, successor, ctxnode, unfi, includediff)
         markerfm.end()
 
         precs = precursors.get(ctxnode, ())
@@ -415,7 +428,7 @@
              label="evolve.node evolve.missing_change_ctx")
     fm.plain('\n')
 
-def _debugobshistorydisplaymarker(fm, marker, node, repo, opts):
+def _debugobshistorydisplaymarker(fm, marker, node, repo, includediff=False):
     succnodes = marker[1]
     date = marker[4]
     metadata = dict(marker[3])
@@ -489,7 +502,7 @@
         fm.write('note', "%s", metadata['note'], label="evolve.note")
 
     # Patch display
-    if opts.get('patch'):
+    if includediff is True:
         _patchavailable = patchavailable(node, repo, marker)
 
         if _patchavailable[0] is True:
--- a/hgext3rd/topic/__init__.py	Sat May 19 18:26:36 2018 +0530
+++ b/hgext3rd/topic/__init__.py	Mon May 21 16:56:52 2018 +0200
@@ -176,7 +176,7 @@
               'topic.active': 'green',
              }
 
-__version__ = '0.9.1.dev'
+__version__ = '0.10.0.dev'
 
 testedwith = '4.3.3 4.4.2 4.5.2 4.6'
 minimumhgversion = '4.3'
--- a/tests/test-discovery-obshashrange.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-discovery-obshashrange.t	Mon May 21 16:56:52 2018 +0200
@@ -224,7 +224,6 @@
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files (+1 heads)
-  remote: 1 new obsolescence markers
   bundle2-input-bundle: no-transaction
   bundle2-input-part: "reply:changegroup" (advisory) (params: 0 advisory) supported
   bundle2-input-part: "reply:obsmarkers" (params: 0 advisory) supported
@@ -232,6 +231,7 @@
   preparing listkeys for "phases"
   sending listkeys command
   received listkey for "phases": 58 bytes
+  remote: 1 new obsolescence markers
   $ hg -R ../server blackbox
   * @0000000000000000000000000000000000000000 (*)> -R server serve --stdio (glob)
   * @0000000000000000000000000000000000000000 (*)> strip detected, evo-ext-stablerange-mergepoint cache reset (glob)
--- a/tests/test-divergent.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-divergent.t	Mon May 21 16:56:52 2018 +0200
@@ -57,8 +57,8 @@
   merge:[2] add bdivergent1
   with: [3] add bdivergent2
   base: [1] add _b
-  updating to "local" conflict
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updating to "local" side of the conflict: c2f698071cba
+  merging "other" content-divergent changeset 'e708fd28d5cf'
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory is now at c26f1d3baed2
   $ hg log -G
@@ -102,8 +102,8 @@
   merge:[6] add cdivergent1
   with: [7] cdivergent2
   base: [5] add _c
-  updating to "local" conflict
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updating to "local" side of the conflict: 26c7705fee96
+  merging "other" content-divergent changeset '0a768ef678d9'
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   nothing changed
   working directory is now at 26c7705fee96
@@ -152,6 +152,7 @@
   merge:[3] add bdivergent2
   with: [2] add bdivergent1
   base: [1] add _b
+  merging "other" content-divergent changeset 'c2f698071cba'
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory is now at aa26817f6fbe
 
--- a/tests/test-evolve-obshistory.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-evolve-obshistory.t	Mon May 21 16:56:52 2018 +0200
@@ -222,9 +222,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden "desc(A0)"
-  updating to a hidden changeset 471f378eab4c
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: 4ae3a4151de9)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: 4ae3a4151de9)
 
@@ -325,9 +325,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg up --hidden -r 'desc(B0)'
-  updating to a hidden changeset 0dec01379d3b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' is pruned)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its parent successor)
 
@@ -524,9 +524,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'min(desc(A0))'
-  updating to a hidden changeset 471597cad322
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471597cad322
   (hidden revision '471597cad322' was split as: 337fec4d2edc, f257fde29c7a)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471597cad322)
   (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a)
 
@@ -805,9 +805,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'min(desc(A0))'
-  updating to a hidden changeset de7290d8b885
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset de7290d8b885
   (hidden revision 'de7290d8b885' was split as: 337fec4d2edc, f257fde29c7a and 2 more)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (de7290d8b885)
   (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a and 2 more)
 
@@ -1030,9 +1030,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'desc(A0)'
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192)
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg update 0dec01379d3b
@@ -1040,9 +1040,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'desc(B0)'
-  updating to a hidden changeset 0dec01379d3b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
 
@@ -1077,9 +1077,9 @@
      summary:     ROOT
   
   $ hg update --hidden 'desc(A0)'
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: fdf9bde5129a)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: fdf9bde5129a)
   $ hg amend -m "A2"
@@ -1377,9 +1377,9 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'desc(A0)'
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' has diverged)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (471f378eab4c has diverged, use 'hg evolve --list --content-divergent' to resolve the issue)
 
@@ -1608,15 +1608,15 @@
   (use --hidden to access hidden revisions)
   [255]
   $ hg update --hidden 'desc(A0)'
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192)
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg update --hidden 0dec01379d3b
-  updating to a hidden changeset 0dec01379d3b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg update 0dec01379d3b
--- a/tests/test-evolve-templates.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-evolve-templates.t	Mon May 21 16:56:52 2018 +0200
@@ -63,9 +63,9 @@
 Check templates
 ---------------
   $ hg up 'desc(A0)' --hidden
-  updating to a hidden changeset 471f378eab4c
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: d004c8f274b9)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: d004c8f274b9)
 
@@ -156,9 +156,9 @@
   
 
   $ hg up 'desc(A1)' --hidden
-  updating to a hidden changeset a468dc9b3633
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset a468dc9b3633
   (hidden revision 'a468dc9b3633' was rewritten as: d004c8f274b9)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (a468dc9b3633)
   (use 'hg evolve' to update to its successor: d004c8f274b9)
 
@@ -332,9 +332,9 @@
 ---------------
 
   $ hg up 'obsolete()' --hidden
-  updating to a hidden changeset 471597cad322
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471597cad322
   (hidden revision '471597cad322' was split as: 337fec4d2edc, f257fde29c7a)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471597cad322)
   (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a)
 
@@ -463,9 +463,9 @@
 ---------------
 
   $ hg up 'desc(A0)' --hidden
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192)
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
 
@@ -490,9 +490,9 @@
   o  ea207398892e
   
   $ hg up 'desc(B0)' --hidden
-  updating to a hidden changeset 0dec01379d3b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
 
@@ -597,9 +597,9 @@
      summary:     ROOT
   
   $ hg update --hidden 'desc(A0)'
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: fdf9bde5129a)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: fdf9bde5129a)
   $ hg amend -m "A2"
@@ -638,9 +638,9 @@
 ---------------
 
   $ hg up 'desc(A0)' --hidden
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' has diverged)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (471f378eab4c has diverged, use 'hg evolve --list --content-divergent' to resolve the issue)
 
@@ -802,9 +802,9 @@
 ---------------
 
   $ hg up 'desc(A0)' --hidden
-  updating to a hidden changeset 471f378eab4c
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192)
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg tlog
@@ -827,9 +827,9 @@
   o  ea207398892e
   
   $ hg up 'desc(B0)' --hidden
-  updating to a hidden changeset 0dec01379d3b
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg tlog
@@ -861,9 +861,9 @@
   
 
   $ hg up 'desc(B1)' --hidden
-  updating to a hidden changeset b7ea6d14e664
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset b7ea6d14e664
   (hidden revision 'b7ea6d14e664' was rewritten as: eb5a0daa2192)
-  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (b7ea6d14e664)
   (use 'hg evolve' to update to its successor: eb5a0daa2192)
   $ hg tlog
@@ -1120,9 +1120,9 @@
   o  ea207398892e
   
   $ hg up -r "desc(B0)" --hidden
-  updating to a hidden changeset 0dec01379d3b
+  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 0dec01379d3b
   (hidden revision '0dec01379d3b' is pruned)
-  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (0dec01379d3b)
   (use 'hg evolve' to update to its parent successor)
   $ hg tlog
@@ -1486,9 +1486,9 @@
   o  ea207398892e
   
   $ hg up --hidden 4
-  updating to a hidden changeset 9bd10a0775e4
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 9bd10a0775e4
   (hidden revision '9bd10a0775e4' has diverged)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (9bd10a0775e4)
   (9bd10a0775e4 has diverged, use 'hg evolve --list --content-divergent' to resolve the issue)
   $ hg rebase -r 7 -d 8 --config extensions.rebase=
@@ -1551,9 +1551,9 @@
 ------------
 
   $ hg up "desc(A0)" --hidden
-  updating to a hidden changeset 471f378eab4c
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 471f378eab4c
   (hidden revision '471f378eab4c' is pruned)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (471f378eab4c)
   (use 'hg evolve' to update to its parent successor)
   $ hg tlog
--- a/tests/test-evolve.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-evolve.t	Mon May 21 16:56:52 2018 +0200
@@ -1254,18 +1254,18 @@
 Shows "use 'hg evolve' to..." hints iff the evolve command is enabled
 
   $ hg --hidden up 14
-  updating to a hidden changeset 484fb3cfa7f2
+  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 484fb3cfa7f2
   (hidden revision '484fb3cfa7f2' was rewritten as: 98e171e2f272)
-  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (484fb3cfa7f2)
   $ cat >> $HGRCPATH <<EOF
   > [experimental]
   > evolutioncommands=evolve
   > EOF
   $ hg --hidden up 15
-  updating to a hidden changeset daa1ff1c7fbd
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset daa1ff1c7fbd
   (hidden revision 'daa1ff1c7fbd' was rewritten as: 0c049e4e5422)
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (daa1ff1c7fbd)
   (use 'hg evolve' to update to its successor: 0c049e4e5422)
 
--- a/tests/test-obsolete.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-obsolete.t	Mon May 21 16:56:52 2018 +0200
@@ -121,7 +121,7 @@
   4
   - 725c380fe99b
   $ hg up --hidden 3 -q
-  updating to a hidden changeset 0d3f46688ccc
+  updated to hidden changeset 0d3f46688ccc
   (hidden revision '0d3f46688ccc' was rewritten as: 725c380fe99b)
   working directory parent is obsolete! (0d3f46688ccc)
 (reported by parents too)
@@ -707,7 +707,7 @@
   
 
   $ hg up --hidden 3 -q
-  updating to a hidden changeset 0d3f46688ccc
+  updated to hidden changeset 0d3f46688ccc
   (hidden revision '0d3f46688ccc' has diverged)
   working directory parent is obsolete! (0d3f46688ccc)
   $ hg evolve
@@ -727,9 +727,9 @@
 Check import reports new unstable changeset:
 
   $ hg up --hidden 2
-  updating to a hidden changeset 4538525df7e2
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset 4538525df7e2
   (hidden revision '4538525df7e2' has diverged)
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (4538525df7e2)
   (4538525df7e2 has diverged, use 'hg evolve --list --content-divergent' to resolve the issue)
   $ hg export 9468a5f5d8b2 | hg import -
--- a/tests/test-sharing.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-sharing.t	Mon May 21 16:56:52 2018 +0200
@@ -509,6 +509,7 @@
   merge:[5] fix bug 24 (v2 by bob)
   with: [6] fix bug 24 (v2 by alice)
   base: [4] fix bug 24 (v1)
+  merging "other" content-divergent changeset 'e3f99ce9d9cd'
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
   working directory is now at 5ad6037c046c
   $ hg log -q -r 'contentdivergent()'
--- a/tests/test-stabilize-result.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-stabilize-result.t	Mon May 21 16:56:52 2018 +0200
@@ -239,9 +239,9 @@
   $ echo 'babar' >> a
   $ hg amend
   $ hg up --hidden 3932c176bbaa
-  updating to a hidden changeset 3932c176bbaa
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 3932c176bbaa
   (hidden revision '3932c176bbaa' was rewritten as: d2f173e25686)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (3932c176bbaa)
   (use 'hg evolve' to update to its successor: d2f173e25686)
   $ mv a a.old
@@ -290,7 +290,7 @@
   merge:[14] More addition
   with: [13] More addition
   base: [12] More addition
-  merging content-divergent changeset
+  merging "other" content-divergent changeset 'd2f173e25686'
   resolving manifests
   merging a
   0 files updated, 1 files merged, 0 files removed, 0 files unresolved
@@ -349,9 +349,9 @@
 -------------------------------------------------
 
   $ hg up --hidden 3932c176bbaa
-  updating to a hidden changeset 3932c176bbaa
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 3932c176bbaa
   (hidden revision '3932c176bbaa' was rewritten as: f344982e63c4)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (3932c176bbaa)
   (use 'hg evolve' to update to its successor: f344982e63c4)
   $ echo 'gotta break' >> a
@@ -362,6 +362,23 @@
   $ hg phase 'contentdivergent()'
   15: draft
   17: draft
+
+  $ glog
+  @  17:0b336205a5d0@default(draft) bk:[] More addition (2)
+  |
+  | *  15:f344982e63c4@default(draft) bk:[] More addition
+  |/
+  | o  11:8fc63fe1f297@default(draft) bk:[] phase-divergent update to 1cf0aacfd363:
+  | |
+  o |  7:7bc2f5967f5e@default(draft) bk:[] add c
+  | |
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
+  |/
+  o  5:66719795a494@default(public) bk:[changea] changea
+  |
+  o  0:07f494440405@default(public) bk:[] adda
+  
+
   $ hg evolve -qn --content-divergent
   hg update -c 0b336205a5d0 &&
   hg merge f344982e63c4 &&
@@ -373,16 +390,68 @@
   merge:[17] More addition (2)
   with: [15] More addition
   base: [12] More addition
+  merging "other" content-divergent changeset 'f344982e63c4'
   merging a
   warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abort
-  abort: merge conflict between several amendments (this is not automated yet)
-  (/!\ You can try:
-  /!\ * manual merge + resolve => new cset X
-  /!\ * hg up to the parent of the amended changeset (which are named W and Z)
-  /!\ * hg revert --all -r X
-  /!\ * hg ci -m "same message as the amended changeset" => new cset Y
-  /!\ * hg prune -n Y W Z
-  )
+  abort: fix conflicts and run 'hg evolve --continue' or use 'hg update -C .' to abort
   [255]
+
+  $ cat > a <<EOF
+  > jungle
+  > a
+  > flore
+  > arthur
+  > zephir
+  > some
+  > less
+  > conflict
+  > babar
+  > EOF
+
+  $ hg resolve -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+  $ hg evolve --continue
+  merge:[17] More addition (2)
+  with: [18] More addition (2)
+  base: [16] More addition
+  updating to "local" side of the conflict: 0b336205a5d0
+  merging "other" content-divergent changeset 'e015aa78acee'
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  working directory is now at e015aa78acee
+  $ glog
+  @  18:e015aa78acee@default(draft) bk:[] More addition (2)
+  |
+  | o  11:8fc63fe1f297@default(draft) bk:[] phase-divergent update to 1cf0aacfd363:
+  | |
+  o |  7:7bc2f5967f5e@default(draft) bk:[] add c
+  | |
+  | o  6:1cf0aacfd363@default(public) bk:[] newer a
+  |/
+  o  5:66719795a494@default(public) bk:[changea] changea
+  |
+  o  0:07f494440405@default(public) bk:[] adda
+  
+  $ hg exp
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Node ID e015aa78acee692d26215fafdb7f70974682739c
+  # Parent  7bc2f5967f5e4ed277f60a89b7b04cc5d6407ced
+  More addition (2)
+  
+  diff -r 7bc2f5967f5e -r e015aa78acee a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,9 @@
+  +jungle
+   a
+  +flore
+  +arthur
+  +zephir
+  +some
+  +less
+  +conflict
+  +babar
--- a/tests/test-touch.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-touch.t	Mon May 21 16:56:52 2018 +0200
@@ -32,9 +32,9 @@
   $ hg add b
   $ hg commit -m ab --amend
   $ hg up --hidden 1
-  updating to a hidden changeset [0-9a-f]{12} (re)
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  updated to hidden changeset * (glob)
   (hidden revision '*' was rewritten as: *) (glob)
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   working directory parent is obsolete! (*) (glob)
   (use 'hg evolve' to update to its successor: *) (glob)
   $ hg log -G
--- a/tests/test-uncommit.t	Sat May 19 18:26:36 2018 +0530
+++ b/tests/test-uncommit.t	Mon May 21 16:56:52 2018 +0200
@@ -238,10 +238,10 @@
 Test phase is preserved, no local changes
 
   $ hg up -C 3 --hidden
-  updating to a hidden changeset 5eb72dbe0cb4
-  (hidden revision '5eb72dbe0cb4' was rewritten as: e8db4aa611f6)
   8 files updated, 0 files merged, 1 files removed, 0 files unresolved
   (leaving bookmark touncommit-bm)
+  updated to hidden changeset 5eb72dbe0cb4
+  (hidden revision '5eb72dbe0cb4' was rewritten as: e8db4aa611f6)
   working directory parent is obsolete! (5eb72dbe0cb4)
   (use 'hg evolve' to update to its successor: e8db4aa611f6)
   $ hg --config extensions.purge= purge
@@ -287,9 +287,9 @@
 Test --all
 
   $ hg up -C 3 --hidden
-  updating to a hidden changeset 5eb72dbe0cb4
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  updated to hidden changeset 5eb72dbe0cb4
   (hidden revision '5eb72dbe0cb4' has diverged)
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   working directory parent is obsolete! (5eb72dbe0cb4)
   (5eb72dbe0cb4 has diverged, use 'hg evolve --list --content-divergent' to resolve the issue)
   $ hg --config extensions.purge= purge