prev: respect `commands.update.check` config option in `hg prev` (issue5808) stable
authorPulkit Goyal <7895pulkit@gmail.com>
Sun, 03 Jun 2018 02:36:24 +0530
branchstable
changeset 3781 e73a73b27f3e
parent 3780 9da11755d615
child 3782 27cf636b2f4d
prev: respect `commands.update.check` config option in `hg prev` (issue5808) `commands.update.check` config option determines what level of checking should be done when we update to another revision. When we set this config option to `noconflict`, it updates your working directory to a specified revision only when there will be no conflicts which is a very nice behavior. This patch adds logic to respect the config option so that we can have that nice behavior with `hg prev` too. It turns out, we just needed to use hg.updatetotally() and add some cases to check config option. Right now, we only respect the config if value is set to `noconflict`. Otherwise we fallback to the default behavior. This is a part of fixing issue5808. Test changes demonstrate the fix.
hgext3rd/evolve/__init__.py
tests/test-prev-next.t
--- a/hgext3rd/evolve/__init__.py	Sun Jun 03 02:50:55 2018 +0530
+++ b/hgext3rd/evolve/__init__.py	Sun Jun 03 02:36:24 2018 +0530
@@ -973,7 +973,7 @@
             repo.ui.write(_('hg bookmark %s -r %s;\n')
                           % (bookmark, target))
     else:
-        ret = hg.update(repo, target.rev())
+        ret = hg.updatetotally(repo.ui, repo, target.node(), None)
         if not ret:
             tr = lock = None
             try:
@@ -1050,11 +1050,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})
--- a/tests/test-prev-next.t	Sun Jun 03 02:50:55 2018 +0530
+++ b/tests/test-prev-next.t	Sun Jun 03 02:36:24 2018 +0530
@@ -397,11 +397,10 @@
 
   $ echo bar > wat
   $ hg prev
-  abort: uncommitted changes
-  (do you want --merge?)
-  [255]
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  [1] added foo
   $ hg diff
-  diff -r ac3de1218820 wat
+  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 @@
@@ -410,10 +409,6 @@
 
 testing for `hg next`
 
-  $ echo hi > wat
-  $ hg up .^
-  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  $ echo bar > wat
   $ hg next
   abort: uncommitted changes
   (do you want --merge?)