[PATCH 4 of 8 phases] mq: qimporting revision set them to secret
pierre-yves.david at logilab.fr
pierre-yves.david at logilab.fr
Tue Jan 17 17:35:37 UTC 2012
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1326763560 -3600
# Node ID e875ff85ee5a816f0a3f168be08760d5efbbeddc
# Parent 86530e2ad6e1126f063ad34ca222aae767f3865a
mq: qimporting revision set them to secret
diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1837,10 +1837,13 @@ class queue(object):
se = statusentry(n, patchname)
self.applied.insert(0, se)
self.added.append(patchname)
patchname = None
+ if rev:
+ # 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
for i, filename in enumerate(files):
@@ -2011,20 +2014,25 @@ def qimport(ui, repo, *filename, **opts)
hg qimport -e existing-patch -n new-name
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):
"""initialize a new queue repository
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
@@ -163,10 +163,12 @@ try to import --push
now at: another.diff
$ hg qfin -a
patch b.diff finalized without changeset message
patch another.diff finalized without changeset message
$ hg qimport -rtip -P
+ $ hg phase -r qbase
+ 2: secret
$ hg qpop -a
popping 2.diff
patch queue now empty
$ hg qdel -k 2.diff
More information about the Mercurial-devel
mailing list