[PATCH] context: make changectx.mutable() benefit from .phase() logic
Patrick Mezard
patrick at mezard.eu
Thu Apr 5 12:19:55 CDT 2012
# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1333646123 -7200
# Branch stable
# Node ID 02e20bff18ee4e4700b07f58eb54452c3120bcae
# Parent 8ca7187d479f87ac876f7371429bdd28c878f597
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 @@
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 @@
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
More information about the Mercurial-devel
mailing list