# HG changeset patch # User Pierre-Yves David # Date 1525255146 -7200 # Node ID 7aa22aadb7bbd670e64e4a6b59b9ddec57f1163d # Parent 3f26434bdf5cfcff3cf09aba84cc6121e5ffae32# Parent 422294cd682fb3c936ea534f2d3f9c31db367c07 branching: merge stable into default diff -r 3f26434bdf5c -r 7aa22aadb7bb hgext3rd/evolve/obshistory.py --- 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), diff -r 3f26434bdf5c -r 7aa22aadb7bb tests/test-evolve-obshistory.t --- 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 ============================= diff -r 3f26434bdf5c -r 7aa22aadb7bb tests/test-evolve-stop-orphan.t --- /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 < [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 diff -r 3f26434bdf5c -r 7aa22aadb7bb tests/test-evolve-stop-phasediv.t --- /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 < [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 diff -r 3f26434bdf5c -r 7aa22aadb7bb tests/test-evolve-stop.t --- 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 < [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