[PATCH 12 of 12] phases: prevent mq to qimport immutable change

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Tue Oct 18 12:27:09 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1318958708 -7200
# Node ID 1080b0b94f25c282c3a338bb4d864408d6d6761e
# Parent  5254346fe69ab981c3d6007e20ba831566b49cbb
phases: prevent mq to qimport immutable change.

diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1761,10 +1761,14 @@ class queue(object):
                 if heads != [repo.changelog.node(rev[0])]:
                     raise util.Abort(_('revision %d has unmanaged children')
                                      % rev[0])
                 lastparent = None
 
+            if not repo[rev[-1]].mutable():
+                raise util.Abort(_('revision %d is not mutable') % rev[0],
+                                 hint=_('See hg help phases for details'))
+
             diffopts = self.diffopts({'git': git})
             for r in rev:
                 p1, p2 = repo.changelog.parentrevs(r)
                 n = repo.changelog.node(r)
                 if p2 != nullrev:
diff --git a/tests/test-mq-qimport-fail-cleanup.t b/tests/test-mq-qimport-fail-cleanup.t
--- a/tests/test-mq-qimport-fail-cleanup.t
+++ b/tests/test-mq-qimport-fail-cleanup.t
@@ -30,5 +30,11 @@ qimport valid patch followed by invalid 
 
 valid patches before fail added to series
 
   $ hg qseries
   b.patch
+
+  $ hg push -q -r 0 . # update phase
+  $ hg qimport -r 0
+  abort: revision 0 is not mutable
+  (See hg help phases for details)
+  [255]


More information about the Mercurial-devel mailing list