qimport: when mq.secret=True set qimported revision as secret stable
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Mon, 30 Jan 2012 17:37:45 +0100
branchstable
changeset 16027 29ea059be33c
parent 16026 31c02546e6de
child 16028 922c0e9b40be
qimport: when mq.secret=True set qimported revision as secret
hgext/mq.py
tests/test-mq-qimport.t
--- a/hgext/mq.py	Mon Jan 30 17:36:30 2012 +0100
+++ b/hgext/mq.py	Mon Jan 30 17:37:45 2012 +0100
@@ -1832,6 +1832,9 @@
 
                 self.added.append(patchname)
                 patchname = None
+            if rev and repo.ui.configbool('mq', 'secret', False):
+                # if we added anything with --rev, we must move the secret root
+                phases.retractboundary(repo, phases.secret, [n])
             self.parseseries()
             self.applieddirty = True
             self.seriesdirty = True
@@ -2006,16 +2009,21 @@
 
     Returns 0 if import succeeded.
     """
-    q = repo.mq
+    lock = repo.lock() # cause this may move phase
     try:
-        q.qimport(repo, filename, patchname=opts.get('name'),
-              existing=opts.get('existing'), force=opts.get('force'),
-              rev=opts.get('rev'), git=opts.get('git'))
+        q = repo.mq
+        try:
+            q.qimport(repo, filename, patchname=opts.get('name'),
+                  existing=opts.get('existing'), force=opts.get('force'),
+                  rev=opts.get('rev'), git=opts.get('git'))
+        finally:
+            q.savedirty()
+
+
+        if opts.get('push') and not opts.get('rev'):
+            return q.push(repo, None)
     finally:
-        q.savedirty()
-
-    if opts.get('push') and not opts.get('rev'):
-        return q.push(repo, None)
+        lock.release()
     return 0
 
 def qinit(ui, repo, create):
--- a/tests/test-mq-qimport.t	Mon Jan 30 17:36:30 2012 +0100
+++ b/tests/test-mq-qimport.t	Mon Jan 30 17:37:45 2012 +0100
@@ -226,3 +226,19 @@
   $ cd ../repo
   $ hg qimport http://localhost:$HGPORT/raw-rev/0///
   adding 0 to series file
+
+check qimport phase:
+
+  $ hg -q qpush
+  now at: 0
+  $ hg phase qparent
+  1: draft
+  $ hg qimport -r qparent
+  $ hg phase qbase
+  1: draft
+  $ hg qfinish qbase
+  $ echo '[mq]' >> $HGRCPATH
+  $ echo 'secret=true' >> $HGRCPATH
+  $ hg qimport -r qparent
+  $ hg phase qbase
+  1: secret