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.
--- 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)