# HG changeset patch # User Patrick Mezard # Date 2012-04-05 17:15:23 # Node ID a1b6a63f9f39d68582f6a45bfee65d8af2314438 # Parent 8255651362357a4d8b05a5e52f085e75c793e5ed 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. diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -127,7 +127,7 @@ class changectx(object): 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 diff --git a/tests/test-mq-qimport.t b/tests/test-mq-qimport.t --- a/tests/test-mq-qimport.t +++ b/tests/test-mq-qimport.t @@ -28,6 +28,14 @@ qimport non-existing-file 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 - <