context: make changectx.mutable() benefit from .phase() logic
This fixes "hg qimport -r null". Previous versions used to:
- Traceback because null revision mutability was not defined
- Add an empty -1.diff patch to the series
The error message:
abort: revision -1 is not mutable
is symptomatic of a deeper problem in phase command revision handling. It could
be fixed easily in the command itself but I feel a better fix must be done in
phase API which raises the issue of phase updates atomicity: aborting in
phases.advanceboundary/retractboundary requires a better rollback behaviour to
avoid partial changes.
--- a/mercurial/context.py Mon Apr 02 22:25:55 2012 +0100
+++ b/mercurial/context.py Thu Apr 05 19:15:23 2012 +0200
@@ -127,7 +127,7 @@
def phasestr(self):
return phases.phasenames[self.phase()]
def mutable(self):
- return self._repo._phaserev[self._rev] > phases.public
+ return self.phase() > phases.public
def hidden(self):
return self._rev in self._repo.changelog.hiddenrevs
--- a/tests/test-mq-qimport.t Mon Apr 02 22:25:55 2012 +0100
+++ b/tests/test-mq-qimport.t Thu Apr 05 19:15:23 2012 +0200
@@ -28,6 +28,14 @@
abort: unable to read file non-existing-file
[255]
+qimport null revision
+
+ $ hg qimport -r null
+ abort: revision -1 is not mutable
+ (see "hg help phases" for details)
+ [255]
+ $ hg qseries
+
import email
$ hg qimport --push -n email - <<EOF