next/prev: require --merge to move with uncommitted changes
authorPierre-Yves David <pierre-yves.david@fb.com>
Tue, 23 Jun 2015 15:26:51 -0700
changeset 1427 fcc467ca740e
parent 1426 6db55f28c965
child 1428 20a3b0b27bfe
next/prev: require --merge to move with uncommitted changes This should previous common mistake.
README
hgext/evolve.py
tests/test-prev-next.t
--- a/README	Tue Jun 23 15:32:47 2015 -0700
+++ b/README	Tue Jun 23 15:26:51 2015 -0700
@@ -64,6 +64,7 @@
 - evolve: `hg evolve --all` only evolve changeset that will end up as
           descendant of the current working copy. The old behavior of `--all`
           in now in `--all --any`.
+- next/prev: requires `--merge` to move with uncommited changes
 
 5.1.5 -- 2015-06-23
 
--- a/hgext/evolve.py	Tue Jun 23 15:32:47 2015 -0700
+++ b/hgext/evolve.py	Tue Jun 23 15:26:51 2015 -0700
@@ -1950,7 +1950,8 @@
 
 @command('^previous',
          [('B', 'move-bookmark', False,
-             _('Move active bookmark after update'))],
+             _('Move active bookmark after update')),
+          ('', 'merge', False, _('bring uncommited change along'))],
          '[-B]')
 def cmdprevious(ui, repo, **opts):
     """update to parent and display summary lines"""
@@ -1958,6 +1959,12 @@
     wparents = wkctx.parents()
     if len(wparents) != 1:
         raise util.Abort('merge in progress')
+    if not opts['merge']:
+        try:
+            cmdutil.bailifchanged(repo)
+        except error.Abort, exc:
+            exc.hint = _('do you want --merge?')
+            raise
 
     parents = wparents[0].parents()
     displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
@@ -1982,7 +1989,8 @@
 
 @command('^next',
          [('B', 'move-bookmark', False,
-             _('Move active bookmark after update'))],
+             _('Move active bookmark after update')),
+          ('', 'merge', False, _('bring uncommited change along'))],
          '[-B]')
 def cmdnext(ui, repo, **opts):
     """update to child and display summary lines"""
@@ -1990,6 +1998,12 @@
     wparents = wkctx.parents()
     if len(wparents) != 1:
         raise util.Abort('merge in progress')
+    if not opts['merge']:
+        try:
+            cmdutil.bailifchanged(repo)
+        except error.Abort, exc:
+            exc.hint = _('do you want --merge?')
+            raise
 
     children = [ctx for ctx in wparents[0].children() if not ctx.obsolete()]
     displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
--- a/tests/test-prev-next.t	Tue Jun 23 15:32:47 2015 -0700
+++ b/tests/test-prev-next.t	Tue Jun 23 15:26:51 2015 -0700
@@ -82,3 +82,25 @@
   $ hg bookmarks
      mark                      2:4e26ef31f919
      no-move                   2:4e26ef31f919
+
+
+Behavior with local modification
+--------------------------------
+
+  $ echo foo > modified-bar
+  $ hg add modified-bar
+  $ hg prev
+  abort: uncommitted changes
+  (do you want --merge?)
+  [255]
+  $ hg prev --merge
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  [0] added a
+  $ hg next
+  abort: uncommitted changes
+  (do you want --merge?)
+  [255]
+  $ hg next --merge
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  [1] added b
+