branching: merge stable into default
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 02 May 2018 11:59:06 +0200
changeset 3733 7aa22aadb7bb
parent 3727 3f26434bdf5c (current diff)
parent 3732 422294cd682f (diff)
child 3734 aae54e80c95c
branching: merge stable into default
tests/test-evolve-stop.t
--- a/hgext3rd/evolve/obshistory.py	Wed Apr 25 14:19:13 2018 +0100
+++ b/hgext3rd/evolve/obshistory.py	Wed May 02 11:59:06 2018 +0200
@@ -285,7 +285,7 @@
                 changectx = missingchangectx(repo, cand)
 
             childrens = [(graphmod.PARENT, x) for x in nodeprec.get(cand, ())]
-            yield (cand, 'M', changectx, childrens)
+            yield (cand, graphmod.CHANGESET, changectx, childrens)
 
 def _obshistorywalker_links(repo, revs, walksuccessors=False):
     """ Iterate the obs history tree starting from revs, traversing
@@ -391,7 +391,9 @@
         _debugobshistorydisplaymissingctx(fm, node)
 
 def _debugobshistorydisplayctx(fm, ctx):
-    shortdescription = ctx.description().splitlines()[0]
+    shortdescription = ctx.description().strip()
+    if shortdescription:
+        shortdescription = shortdescription.splitlines()[0]
 
     fm.startitem()
     fm.write('node', '%s', str(ctx),
--- a/tests/test-evolve-obshistory.t	Wed Apr 25 14:19:13 2018 +0100
+++ b/tests/test-evolve-obshistory.t	Wed May 02 11:59:06 2018 +0200
@@ -16,6 +16,23 @@
   > evolution.effect-flags = yes
   > EOF
 
+Test simple common cases
+========================
+
+Test setup
+----------
+  $ hg init $TESTTMP/simple
+  $ cd $TESTTMP/simple
+
+Actual test
+-----------
+  $ hg obslog -ap null
+  @  000000000000 (-1)
+  
+  $ hg obslog 'wdir()'
+  abort: working directory revision cannot be specified
+  [255]
+
 Test output on amended commit
 =============================
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-stop-orphan.t	Wed May 02 11:59:06 2018 +0200
@@ -0,0 +1,384 @@
+Tests for the --stop flag for `hg evolve` command while resolving orphans
+=========================================================================
+
+The `--stop` flag stops the interrupted evolution and delete the state file so
+user can do other things and comeback and do evolution later on
+
+This is testing cases when `hg evolve` command is doing orphan resolution.
+
+Setup
+=====
+
+  $ cat >> $HGRCPATH <<EOF
+  > [alias]
+  > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
+  > [extensions]
+  > EOF
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+  $ hg init stoprepo
+  $ cd stoprepo
+  $ echo ".*\.orig" > .hgignore
+  $ hg add .hgignore
+  $ hg ci -m "added hgignore"
+  $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
+
+  $ hg glog
+  @  4:c41c793e0ef1 added d
+  |   () draft
+  o  3:ca1b80f7960a added c
+  |   () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+Testing `--stop` when no evolve is interrupted
+==============================================
+
+  $ hg evolve --stop
+  abort: no interrupted evolve to stop
+  [255]
+
+Testing with wrong combinations of flags
+========================================
+
+  $ hg evolve --stop --rev 1
+  abort: cannot specify both "--rev" and "--stop"
+  [255]
+
+  $ hg evolve --stop --continue
+  abort: cannot specify both "--stop" and "--continue"
+  [255]
+
+  $ hg evolve --stop --all
+  abort: cannot specify both "--all" and "--stop"
+  [255]
+
+  $ hg evolve --stop --any
+  abort: cannot specify both "--any" and "--stop"
+  [255]
+
+Testing when only one revision is to evolve
+===========================================
+
+  $ hg prev
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  [3] added c
+  $ echo bar > d
+  $ hg add d
+  $ hg amend
+  1 new orphan changesets
+  $ hg glog
+  @  5:cb6a2ab625bb added c
+  |   () draft
+  | *  4:c41c793e0ef1 added d
+  | |   () draft
+  | x  3:ca1b80f7960a added c
+  |/    () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+  $ hg evolve
+  move:[4] added d
+  atop:[5] added c
+  merging d
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ hg evolve --stop
+  stopped the interrupted evolve
+  working directory is now at cb6a2ab625bb
+
+Checking whether evolvestate file exists or not
+  $ cat .hg/evolvestate
+  cat: .hg/evolvestate: No such file or directory
+  [1]
+
+Checking where we are
+  $ hg id
+  cb6a2ab625bb tip
+
+Checking working dir
+  $ hg status
+Checking for incomplete mergestate
+  $ ls .hg/merge
+  ls: cannot access .?\.hg/merge.?: No such file or directory (re)
+  [2]
+
+Checking graph
+  $ hg glog
+  @  5:cb6a2ab625bb added c
+  |   () draft
+  | *  4:c41c793e0ef1 added d
+  | |   () draft
+  | x  3:ca1b80f7960a added c
+  |/    () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+Testing the stop flag in case conflicts are caused by `hg next --evolve`
+========================================================================
+
+  $ hg next --evolve
+  move:[4] added d
+  atop:[5] added c
+  merging d
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ hg diff
+  diff -r cb6a2ab625bb d
+  --- a/d	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< destination: cb6a2ab625bb - test: added c
+   bar
+  +=======
+  +foo
+  +>>>>>>> evolving:    c41c793e0ef1 - test: added d
+
+  $ hg evolve --stop
+  stopped the interrupted evolve
+  working directory is now at cb6a2ab625bb
+
+  $ hg glog
+  @  5:cb6a2ab625bb added c
+  |   () draft
+  | *  4:c41c793e0ef1 added d
+  | |   () draft
+  | x  3:ca1b80f7960a added c
+  |/    () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+  $ hg status
+
+Checking when multiple revs need to be evolved, some revs evolve without
+conflicts
+=========================================================================
+
+Making sure obsmarkers should be on evolved changeset and not rest of them once
+we do `evolve --stop`
+--------------------------------------------------------------------------------
+
+  $ hg evolve
+  move:[4] added d
+  atop:[5] added c
+  merging d
+  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+  $ echo foo > d
+  $ hg resolve -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+  $ hg evolve --continue
+  evolving 4:c41c793e0ef1 "added d"
+  working directory is now at 2a4e03d422e2
+  $ hg glog
+  @  6:2a4e03d422e2 added d
+  |   () draft
+  o  5:cb6a2ab625bb added c
+  |   () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+  $ hg up .^^^^
+  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+  $ echo bar > c
+  $ hg add c
+  $ hg amend
+  4 new orphan changesets
+
+  $ hg glog
+  @  7:21817cd42526 added hgignore
+      () draft
+  *  6:2a4e03d422e2 added d
+  |   () draft
+  *  5:cb6a2ab625bb added c
+  |   () draft
+  *  2:b1661037fa25 added b
+  |   () draft
+  *  1:c7586e2a9264 added a
+  |   () draft
+  x  0:8fa14d15e168 added hgignore
+      () draft
+
+  $ hg evolve --all
+  move:[1] added a
+  atop:[7] added hgignore
+  move:[2] added b
+  atop:[8] added a
+  move:[5] added c
+  atop:[9] added b
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ hg status
+  M c
+  A d
+
+  $ hg evolve --stop
+  stopped the interrupted evolve
+  working directory is now at aec285328e90
+
+Only changeset which has a successor now are obsoleted
+  $ hg glog
+  @  9:aec285328e90 added b
+  |   () draft
+  o  8:fd00db71edca added a
+  |   () draft
+  o  7:21817cd42526 added hgignore
+      () draft
+  *  6:2a4e03d422e2 added d
+  |   () draft
+  *  5:cb6a2ab625bb added c
+  |   () draft
+  x  2:b1661037fa25 added b
+  |   () draft
+  x  1:c7586e2a9264 added a
+  |   () draft
+  x  0:8fa14d15e168 added hgignore
+      () draft
+
+Making sure doing evolve again resumes from right place and does the right thing
+
+  $ hg evolve --all
+  move:[5] added c
+  atop:[9] added b
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ echo foobar > c
+  $ hg resolve -m
+  (no more unresolved files)
+  continue: hg evolve --continue
+  $ hg evolve --continue
+  evolving 5:cb6a2ab625bb "added c"
+  move:[6] added d
+  atop:[10] added c
+  working directory is now at cd0909a30222
+  $ hg glog
+  @  11:cd0909a30222 added d
+  |   () draft
+  o  10:cb1dd1086ef6 added c
+  |   () draft
+  o  9:aec285328e90 added b
+  |   () draft
+  o  8:fd00db71edca added a
+  |   () draft
+  o  7:21817cd42526 added hgignore
+      () draft
+
+Bookmarks should only be moved of the changesets which have been evolved,
+bookmarks of rest of them should stay where they are are
+-------------------------------------------------------------------------
+
+  $ hg up .^
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg bookmark b1
+  $ hg up .^
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  (leaving bookmark b1)
+  $ hg bookmark b2
+
+  $ hg glog
+  o  11:cd0909a30222 added d
+  |   () draft
+  o  10:cb1dd1086ef6 added c
+  |   (b1) draft
+  @  9:aec285328e90 added b
+  |   (b2) draft
+  o  8:fd00db71edca added a
+  |   () draft
+  o  7:21817cd42526 added hgignore
+      () draft
+
+  $ hg prev
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  [8] added a
+  $ echo tom > c
+  $ hg amend
+  3 new orphan changesets
+
+  $ hg glog
+  @  12:a3cc2042492f added a
+  |   () draft
+  | *  11:cd0909a30222 added d
+  | |   () draft
+  | *  10:cb1dd1086ef6 added c
+  | |   (b1) draft
+  | *  9:aec285328e90 added b
+  | |   (b2) draft
+  | x  8:fd00db71edca added a
+  |/    () draft
+  o  7:21817cd42526 added hgignore
+      () draft
+
+  $ hg evolve --all
+  move:[9] added b
+  atop:[12] added a
+  move:[10] added c
+  atop:[13] added b
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  evolve failed!
+  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ hg evolve --stop
+  stopped the interrupted evolve
+  working directory is now at a3f4b95da934
+
+Bookmarks of only the changeset which are evolved is moved
+  $ hg glog
+  @  13:a3f4b95da934 added b
+  |   (b2) draft
+  o  12:a3cc2042492f added a
+  |   () draft
+  | *  11:cd0909a30222 added d
+  | |   () draft
+  | *  10:cb1dd1086ef6 added c
+  | |   (b1) draft
+  | x  9:aec285328e90 added b
+  | |   () draft
+  | x  8:fd00db71edca added a
+  |/    () draft
+  o  7:21817cd42526 added hgignore
+      () draft
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-evolve-stop-phasediv.t	Wed May 02 11:59:06 2018 +0200
@@ -0,0 +1,109 @@
+Tests for the --stop flag for `hg evolve` command while resolving phase-divergence
+==================================================================================
+
+The `--stop` flag stops the interrupted evolution and delete the state file so
+user can do other things and comeback and do evolution later on
+
+This is testing cases when `hg evolve` command is doing phase-divergence resolution.
+
+Setup
+=====
+
+  $ cat >> $HGRCPATH <<EOF
+  > [alias]
+  > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
+  > [extensions]
+  > EOF
+  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
+
+  $ hg init stoprepo
+  $ cd stoprepo
+  $ echo ".*\.orig" > .hgignore
+  $ hg add .hgignore
+  $ hg ci -m "added hgignore"
+  $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
+
+  $ hg glog
+  @  4:c41c793e0ef1 added d
+  |   () draft
+  o  3:ca1b80f7960a added c
+  |   () draft
+  o  2:b1661037fa25 added b
+  |   () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+Creating phase divergence, resolution of which will lead to conflicts
+----------------------------------------------------------------------
+
+  $ hg up .^^^
+  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ hg grab -r .~-3
+  grabbing 4:c41c793e0ef1 "added d"
+  $ echo foobar > c
+  $ hg add c
+  $ hg amend
+
+  $ hg glog --hidden
+  @  6:ddba58020bc0 added d
+  |   () draft
+  | x  5:cfe30edc6125 added d
+  |/    () draft
+  | x  4:c41c793e0ef1 added d
+  | |   () draft
+  | o  3:ca1b80f7960a added c
+  | |   () draft
+  | o  2:b1661037fa25 added b
+  |/    () draft
+  o  1:c7586e2a9264 added a
+  |   () draft
+  o  0:8fa14d15e168 added hgignore
+      () draft
+
+  $ hg phase -r c41c793e0ef1 --public --hidden
+  1 new phase-divergent changesets
+
+  $ hg glog
+  @  6:ddba58020bc0 added d
+  |   () draft
+  | o  4:c41c793e0ef1 added d
+  | |   () public
+  | o  3:ca1b80f7960a added c
+  | |   () public
+  | o  2:b1661037fa25 added b
+  |/    () public
+  o  1:c7586e2a9264 added a
+  |   () public
+  o  0:8fa14d15e168 added hgignore
+      () public
+  $ hg evolve --phase-divergent
+  recreate:[6] added d
+  atop:[4] added d
+  rebasing to destination parent: ca1b80f7960a
+  merging c
+  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
+  evolution failed!
+  fix conflict then run 'hg evolve --continue' or use `hg evolve --abort`
+  abort: unresolved merge conflicts (see hg help resolve)
+  [255]
+
+  $ hg evolve --stop
+  stopped the interrupted evolve
+  working directory is now at ca1b80f7960a
+
+XXX: maybe we should update wdir to where it was
+  $ hg glog
+  *  6:ddba58020bc0 added d
+  |   () draft
+  | o  4:c41c793e0ef1 added d
+  | |   () public
+  | @  3:ca1b80f7960a added c
+  | |   () public
+  | o  2:b1661037fa25 added b
+  |/    () public
+  o  1:c7586e2a9264 added a
+  |   () public
+  o  0:8fa14d15e168 added hgignore
+      () public
--- a/tests/test-evolve-stop.t	Wed Apr 25 14:19:13 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-Tests for the --stop flag for `hg evolve` command
-=================================================
-
-The `--stop` flag stops the interrupted evolution and delete the state file so
-user can do other things and comeback and do evolution later on
-
-Setup
-=====
-
-  $ cat >> $HGRCPATH <<EOF
-  > [alias]
-  > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
-  > [extensions]
-  > EOF
-  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
-
-  $ hg init stoprepo
-  $ cd stoprepo
-  $ echo ".*\.orig" > .hgignore
-  $ hg add .hgignore
-  $ hg ci -m "added hgignore"
-  $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
-
-  $ hg glog
-  @  4:c41c793e0ef1 added d
-  |   () draft
-  o  3:ca1b80f7960a added c
-  |   () draft
-  o  2:b1661037fa25 added b
-  |   () draft
-  o  1:c7586e2a9264 added a
-  |   () draft
-  o  0:8fa14d15e168 added hgignore
-      () draft
-
-Testing `--stop` when no evolve is interrupted
-==============================================
-
-  $ hg evolve --stop
-  abort: no interrupted evolve to stop
-  [255]
-
-Testing with wrong combinations of flags
-========================================
-
-  $ hg evolve --stop --rev 1
-  abort: cannot specify both "--rev" and "--stop"
-  [255]
-
-  $ hg evolve --stop --continue
-  abort: cannot specify both "--stop" and "--continue"
-  [255]
-
-  $ hg evolve --stop --all
-  abort: cannot specify both "--all" and "--stop"
-  [255]
-
-  $ hg evolve --stop --any
-  abort: cannot specify both "--any" and "--stop"
-  [255]
-
-Testing when only one revision is to evolve
-===========================================
-
-  $ hg prev
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [3] added c
-  $ echo bar > d
-  $ hg add d
-  $ hg amend
-  1 new orphan changesets
-  $ hg glog
-  @  5:cb6a2ab625bb added c
-  |   () draft
-  | *  4:c41c793e0ef1 added d
-  | |   () draft
-  | x  3:ca1b80f7960a added c
-  |/    () draft
-  o  2:b1661037fa25 added b
-  |   () draft
-  o  1:c7586e2a9264 added a
-  |   () draft
-  o  0:8fa14d15e168 added hgignore
-      () draft
-
-  $ hg evolve
-  move:[4] added d
-  atop:[5] added c
-  merging d
-  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-
-  $ hg evolve --stop
-  stopped the interrupted evolve
-  working directory is now at cb6a2ab625bb
-
-Checking whether evolvestate file exists or not
-  $ cat .hg/evolvestate
-  cat: .hg/evolvestate: No such file or directory
-  [1]
-
-Checking where we are
-  $ hg id
-  cb6a2ab625bb tip
-
-Checking working dir
-  $ hg status
-Checking for incomplete mergestate
-  $ ls .hg/merge
-  ls: cannot access .?\.hg/merge.?: No such file or directory (re)
-  [2]
-
-Checking graph
-  $ hg glog
-  @  5:cb6a2ab625bb added c
-  |   () draft
-  | *  4:c41c793e0ef1 added d
-  | |   () draft
-  | x  3:ca1b80f7960a added c
-  |/    () draft
-  o  2:b1661037fa25 added b
-  |   () draft
-  o  1:c7586e2a9264 added a
-  |   () draft
-  o  0:8fa14d15e168 added hgignore
-      () draft
-
-Testing the stop flag in case conflicts are caused by `hg next --evolve`
-========================================================================
-
-  $ hg next --evolve
-  move:[4] added d
-  atop:[5] added c
-  merging d
-  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-
-  $ hg diff
-  diff -r cb6a2ab625bb d
-  --- a/d	Thu Jan 01 00:00:00 1970 +0000
-  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,1 +1,5 @@
-  +<<<<<<< destination: cb6a2ab625bb - test: added c
-   bar
-  +=======
-  +foo
-  +>>>>>>> evolving:    c41c793e0ef1 - test: added d
-
-  $ hg evolve --stop
-  stopped the interrupted evolve
-  working directory is now at cb6a2ab625bb
-
-  $ hg glog
-  @  5:cb6a2ab625bb added c
-  |   () draft
-  | *  4:c41c793e0ef1 added d
-  | |   () draft
-  | x  3:ca1b80f7960a added c
-  |/    () draft
-  o  2:b1661037fa25 added b
-  |   () draft
-  o  1:c7586e2a9264 added a
-  |   () draft
-  o  0:8fa14d15e168 added hgignore
-      () draft
-
-  $ hg status
-
-Checking when multiple revs need to be evolved, some revs evolve without
-conflicts
-=========================================================================
-
-Making sure obsmarkers should be on evolved changeset and not rest of them once
-we do `evolve --stop`
---------------------------------------------------------------------------------
-
-  $ hg evolve
-  move:[4] added d
-  atop:[5] added c
-  merging d
-  warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-  $ echo foo > d
-  $ hg resolve -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-  $ hg evolve --continue
-  evolving 4:c41c793e0ef1 "added d"
-  working directory is now at 2a4e03d422e2
-  $ hg glog
-  @  6:2a4e03d422e2 added d
-  |   () draft
-  o  5:cb6a2ab625bb added c
-  |   () draft
-  o  2:b1661037fa25 added b
-  |   () draft
-  o  1:c7586e2a9264 added a
-  |   () draft
-  o  0:8fa14d15e168 added hgignore
-      () draft
-
-  $ hg up .^^^^
-  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
-  $ echo bar > c
-  $ hg add c
-  $ hg amend
-  4 new orphan changesets
-
-  $ hg glog
-  @  7:21817cd42526 added hgignore
-      () draft
-  *  6:2a4e03d422e2 added d
-  |   () draft
-  *  5:cb6a2ab625bb added c
-  |   () draft
-  *  2:b1661037fa25 added b
-  |   () draft
-  *  1:c7586e2a9264 added a
-  |   () draft
-  x  0:8fa14d15e168 added hgignore
-      () draft
-
-  $ hg evolve --all
-  move:[1] added a
-  atop:[7] added hgignore
-  move:[2] added b
-  atop:[8] added a
-  move:[5] added c
-  atop:[9] added b
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-
-  $ hg status
-  M c
-  A d
-
-  $ hg evolve --stop
-  stopped the interrupted evolve
-  working directory is now at aec285328e90
-
-Only changeset which has a successor now are obsoleted
-  $ hg glog
-  @  9:aec285328e90 added b
-  |   () draft
-  o  8:fd00db71edca added a
-  |   () draft
-  o  7:21817cd42526 added hgignore
-      () draft
-  *  6:2a4e03d422e2 added d
-  |   () draft
-  *  5:cb6a2ab625bb added c
-  |   () draft
-  x  2:b1661037fa25 added b
-  |   () draft
-  x  1:c7586e2a9264 added a
-  |   () draft
-  x  0:8fa14d15e168 added hgignore
-      () draft
-
-Making sure doing evolve again resumes from right place and does the right thing
-
-  $ hg evolve --all
-  move:[5] added c
-  atop:[9] added b
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-
-  $ echo foobar > c
-  $ hg resolve -m
-  (no more unresolved files)
-  continue: hg evolve --continue
-  $ hg evolve --continue
-  evolving 5:cb6a2ab625bb "added c"
-  move:[6] added d
-  atop:[10] added c
-  working directory is now at cd0909a30222
-  $ hg glog
-  @  11:cd0909a30222 added d
-  |   () draft
-  o  10:cb1dd1086ef6 added c
-  |   () draft
-  o  9:aec285328e90 added b
-  |   () draft
-  o  8:fd00db71edca added a
-  |   () draft
-  o  7:21817cd42526 added hgignore
-      () draft
-
-Bookmarks should only be moved of the changesets which have been evolved,
-bookmarks of rest of them should stay where they are are
--------------------------------------------------------------------------
-
-  $ hg up .^
-  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hg bookmark b1
-  $ hg up .^
-  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  (leaving bookmark b1)
-  $ hg bookmark b2
-
-  $ hg glog
-  o  11:cd0909a30222 added d
-  |   () draft
-  o  10:cb1dd1086ef6 added c
-  |   (b1) draft
-  @  9:aec285328e90 added b
-  |   (b2) draft
-  o  8:fd00db71edca added a
-  |   () draft
-  o  7:21817cd42526 added hgignore
-      () draft
-
-  $ hg prev
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  [8] added a
-  $ echo tom > c
-  $ hg amend
-  3 new orphan changesets
-
-  $ hg glog
-  @  12:a3cc2042492f added a
-  |   () draft
-  | *  11:cd0909a30222 added d
-  | |   () draft
-  | *  10:cb1dd1086ef6 added c
-  | |   (b1) draft
-  | *  9:aec285328e90 added b
-  | |   (b2) draft
-  | x  8:fd00db71edca added a
-  |/    () draft
-  o  7:21817cd42526 added hgignore
-      () draft
-
-  $ hg evolve --all
-  move:[9] added b
-  atop:[12] added a
-  move:[10] added c
-  atop:[13] added b
-  merging c
-  warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
-  evolve failed!
-  fix conflict and run 'hg evolve --continue' or use 'hg evolve --abort' to abort
-  abort: unresolved merge conflicts (see hg help resolve)
-  [255]
-
-  $ hg evolve --stop
-  stopped the interrupted evolve
-  working directory is now at a3f4b95da934
-
-Bookmarks of only the changeset which are evolved is moved
-  $ hg glog
-  @  13:a3f4b95da934 added b
-  |   (b2) draft
-  o  12:a3cc2042492f added a
-  |   () draft
-  | *  11:cd0909a30222 added d
-  | |   () draft
-  | *  10:cb1dd1086ef6 added c
-  | |   (b1) draft
-  | x  9:aec285328e90 added b
-  | |   () draft
-  | x  8:fd00db71edca added a
-  |/    () draft
-  o  7:21817cd42526 added hgignore
-      () draft