--- a/CHANGELOG Thu May 24 02:12:14 2018 +0530
+++ b/CHANGELOG Tue Jun 05 03:37:15 2018 +0200
@@ -6,6 +6,12 @@
* evolve: handle branch changes when solving content divergence,
+8.0.1 -- in-progress
+---------------------
+
+ * next-prev: respect commands.update.check config option (issue5808)
+ * next-prev: fix `evolve --abort` on conflicts (issue5897)
+
8.0.0 -- 2018-04-25
-------------------
--- a/hgext3rd/evolve/__init__.py Thu May 24 02:12:14 2018 +0530
+++ b/hgext3rd/evolve/__init__.py Tue Jun 05 03:37:15 2018 +0200
@@ -973,7 +973,12 @@
repo.ui.write(_('hg bookmark %s -r %s;\n')
% (bookmark, target))
else:
- ret = hg.update(repo, target.rev())
+ try:
+ ret = hg.updatetotally(repo.ui, repo, target.node(), None)
+ except error.Abort as exc:
+ # replace the hint to mention about --merge option
+ exc.hint = _('do you want --merge?')
+ raise
if not ret:
tr = lock = None
try:
@@ -1050,11 +1055,15 @@
if len(wparents) != 1:
raise error.Abort(_('merge in progress'))
if not opts['merge']:
- try:
- cmdutil.bailifchanged(repo)
- except error.Abort as exc:
- exc.hint = _('do you want --merge?')
- raise
+ # we only skip the check if noconflict is set
+ if ui.config('commands', 'update.check') == 'noconflict':
+ pass
+ else:
+ try:
+ cmdutil.bailifchanged(repo)
+ except error.Abort as exc:
+ exc.hint = _('do you want --merge?')
+ raise
displayer = compat.changesetdisplayer(ui, repo,
{'template': shorttemplate})
@@ -1103,12 +1112,21 @@
wparents = wkctx.parents()
if len(wparents) != 1:
raise error.Abort(_('merge in progress'))
+
+ # check for dirty wdir if --evolve is passed
+ if opts['evolve']:
+ cmdutil.bailifchanged(repo)
+
if not opts['merge']:
- try:
- cmdutil.bailifchanged(repo)
- except error.Abort as exc:
- exc.hint = _('do you want --merge?')
- raise
+ # we only skip the check if noconflict is set
+ if ui.config('commands', 'update.check') == 'noconflict':
+ pass
+ else:
+ try:
+ cmdutil.bailifchanged(repo)
+ except error.Abort as exc:
+ exc.hint = _('do you want --merge?')
+ raise
children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()]
topic = _getcurrenttopic(repo)
@@ -1195,7 +1213,13 @@
if shouldmove:
ui.write(_('hg bookmark %s -r %s;\n') % (bm, children))
else:
- ret = hg.update(repo, children)
+ try:
+ ret = hg.updatetotally(ui, repo, children.node(), None)
+ except error.Abort as exc:
+ # replace the hint to mention about --merge option
+ exc.hint = _('do you want --merge?')
+ raise
+
if not ret:
lock = tr = None
try:
--- a/hgext3rd/evolve/evolvecmd.py Thu May 24 02:12:14 2018 +0530
+++ b/hgext3rd/evolve/evolvecmd.py Tue Jun 05 03:37:15 2018 +0200
@@ -1295,6 +1295,14 @@
if not evolvestate:
raise error.Abort(_('no interrupted evolve to stop'))
evolvestate.load()
+ # `hg next --evolve` in play
+ if evolvestate['command'] != 'evolve':
+ pctx = repo['.']
+ hg.updaterepo(repo, pctx.node(), True)
+ ui.status(_('evolve aborted\n'))
+ ui.status(_('working directory is now at %s\n')
+ % pctx.hex()[:12])
+ return 0
return abortevolve(ui, repo, evolvestate)
else:
cmdutil.bailifchanged(repo)
--- a/tests/test-evolve-abort-orphan.t Thu May 24 02:12:14 2018 +0530
+++ b/tests/test-evolve-abort-orphan.t Tue Jun 05 03:37:15 2018 +0200
@@ -502,3 +502,24 @@
|/ () draft
o 0:8fa14d15e168 added hgignore
() draft
+
+Testing `--abort` when conflicts are caused due to `hg next --evolve`
+=====================================================================
+
+ $ hg next --evolve
+ move:[2] added b
+ atop:[4] added a
+ working directory now at c1f4718020e3
+ $ hg next --evolve
+ move:[3] added c
+ atop:[5] 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 --abort
+ evolve aborted
+ working directory is now at c1f4718020e3
--- a/tests/test-prev-next.t Thu May 24 02:12:14 2018 +0530
+++ b/tests/test-prev-next.t Tue Jun 05 03:37:15 2018 +0200
@@ -354,3 +354,88 @@
atop:[3] one
working directory now at a7d885c75614
$ wait
+
+testing next --evolve when working directory is dirty
+
+ $ hg log -GT "{rev}:{node|short} {desc|firstline}"
+ @ 4:a7d885c75614 two
+ |
+ o 3:c741983992fc one
+
+
+ $ hg up .^
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+ $ echo foobar > bar
+ $ hg add bar
+ $ hg amend
+ 1 new orphan changesets
+
+ $ echo babar > bar
+
+ $ hg next --evolve
+ abort: uncommitted changes
+ [255]
+
+ $ cd ..
+
+Testing that `next` and `prev` respects `commands.update.check=noconflict`
+
+ $ hg init noconflict
+ $ cd noconflict
+ $ echo "[commands]" >> .hg/hgrc
+ $ echo "update.check=noconflict" >> .hg/hgrc
+
+ $ echo hi > wat
+ $ hg ci -Aqm "added wat"
+ $ echo hi > foo
+ $ hg ci -Aqm "added foo"
+ $ echo hi > bar
+ $ hg ci -Aqm "added bar"
+
+testing for `hg prev`
+
+ $ echo bar > wat
+ $ hg prev
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ [1] added foo
+ $ hg diff
+ diff -r cf959ce4e1ff wat
+ --- a/wat Thu Jan 01 00:00:00 1970 +0000
+ +++ b/wat Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -hi
+ +bar
+
+testing for `hg next`
+
+ $ hg next
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ [2] added bar
+ $ hg diff
+ diff -r ac3de1218820 wat
+ --- a/wat Thu Jan 01 00:00:00 1970 +0000
+ +++ b/wat Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -hi
+ +bar
+
+test that we dont end up in merge conflicts
+
+ $ echo bar > bar
+ $ hg prev
+ abort: conflicting changes
+ (do you want --merge?)
+ [255]
+
+ $ echo hi > bar
+ $ hg prev
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ [1] added foo
+ $ echo bar > bar
+ $ hg add bar
+
+ $ hg next
+ abort: conflicting changes
+ (do you want --merge?)
+ [255]