rebase: check no-op before checking phase (issue3891)
authorSiddharth Agarwal <sid0@fb.com>
Thu, 18 Apr 2013 14:28:06 -0700
changeset 19059 53eadcb814fd
parent 19058 d8d548d868d3
child 19060 c010cb6fdef7
rebase: check no-op before checking phase (issue3891) This could lead to user confusion, because phases aren't really involved at all when attempting to perform a no-op rebase.
hgext/rebase.py
tests/test-rebase-scenario-global.t
--- a/hgext/rebase.py	Wed Apr 10 19:27:49 2013 -0500
+++ b/hgext/rebase.py	Thu Apr 18 14:28:06 2013 -0700
@@ -209,10 +209,6 @@
                     _("can't remove original changesets with"
                       " unrebased descendants"),
                     hint=_('use --keep to keep original changesets'))
-            elif not keepf and not repo[root].mutable():
-                raise util.Abort(_("can't rebase immutable changeset %s")
-                                 % repo[root],
-                                 hint=_('see hg help phases for details'))
             else:
                 result = buildstate(repo, dest, rebaseset, collapsef)
 
@@ -220,6 +216,10 @@
                 # Empty state built, nothing to rebase
                 ui.status(_('nothing to rebase\n'))
                 return 1
+            elif not keepf and not repo[root].mutable():
+                raise util.Abort(_("can't rebase immutable changeset %s")
+                                 % repo[root],
+                                 hint=_('see hg help phases for details'))
             else:
                 originalwd, target, state = result
                 if collapsef:
--- a/tests/test-rebase-scenario-global.t	Wed Apr 10 19:27:49 2013 -0500
+++ b/tests/test-rebase-scenario-global.t	Thu Apr 18 14:28:06 2013 -0700
@@ -276,6 +276,9 @@
 Check rebasing public changeset
 
   $ hg pull --config phases.publish=True -q -r 6 . # update phase of 6
+  $ hg rebase -d 0 -b 6
+  nothing to rebase
+  [1]
   $ hg rebase -d 5 -b 6
   abort: can't rebase immutable changeset e1c4361dd923
   (see hg help phases for details)