--- a/hgext/states.py Mon Sep 12 23:47:06 2011 +0200
+++ b/hgext/states.py Tue Sep 13 00:45:42 2011 +0200
@@ -250,7 +250,8 @@
Other extensions
................
-:Rebase: can't rewrite unpublished changeset.
+:rebase: can't rebase immutable changeset.
+:mq: can't qimport immutable changeset.
@@ -656,6 +657,18 @@
hint=_('see `hg help --extension states` for details'))
return result
+def wrapmqqimport(orig, queue, repo, *args, **kwargs):
+ if 'rev' in kwargs:
+ # we can take the min as non linear import wil break
+ base = min(scmutil.revrange(repo, kwargs['rev']))
+ basenode = repo.changelog.node(base)
+ state = repo.nodestate(basenode)
+ if not state.properties & _MUTABLE:
+ raise util.Abort(_('can not qimport published changeset %s')
+ % node.short(basenode),
+ hint=_('see `hg help --extension states` for details'))
+ return orig(queue, repo, *args, **kwargs)
+
def uisetup(ui):
"""
@@ -679,12 +692,20 @@
for state in STATES:
if state.trackheads:
revset.symbols[state.headssymbol] = state._revsetheads
+ # wrap rebase
try:
rebase = extensions.find('rebase')
if rebase:
extensions.wrapfunction(rebase, 'buildstate', wraprebasebuildstate)
except KeyError:
pass # rebase not found
+ # wrap mq
+ try:
+ mq = extensions.find('mq')
+ if mq:
+ extensions.wrapfunction(mq.queue, 'qimport', wrapmqqimport)
+ except KeyError:
+ pass # mq not found
--- a/tests/test-published.t Mon Sep 12 23:47:06 2011 +0200
+++ b/tests/test-published.t Tue Sep 13 00:45:42 2011 +0200
@@ -5,11 +5,12 @@
> allow_push = *
> [extensions]
> hgext.rebase=
+ > hgext.mq=
> EOF
$ echo "states=$(echo $(dirname $TESTDIR))/hgext/states.py" >> $HGRCPATH
-test you can't rebase published changeset
+init stuff
$ hg init local
$ cd local
@@ -26,21 +27,33 @@
$ hg add rhino
$ hg ci -m "add rhino"
created new head
+ $ hg published 1 2
$ hg up 1 -q
- $ hg rebase
+ $ hg states draft
+ $ echo "flore" > babar
+ $ hg ci -m "add daughter"
+
+test you can't qimport published changeset
+
+ $ hg qimport -r 1
+ abort: can not qimport published changeset 710fe444b3b0
+ (see `hg help --extension states` for details)
+ [255]
+
+but other are ok
+
+ $ hg qimport -r 3
+ $ hg qfinish -a
+
+test you can't rebase published changeset
+
+ $ hg rebase --dest 2 -b 1
abort: can not rebase published changeset 710fe444b3b0
(see `hg help --extension states` for details)
[255]
test you still can rebase other one
- $ hg published 1 2
- $ hg states draft
- $ echo "flore" > babar
- $ hg ci -m "add daughter"
- $ hg rebase --dest 2
- abort: can not rebase published changeset 710fe444b3b0
- (see `hg help --extension states` for details)
- [255]
$ hg rebase --dest 2 -s 3
saved backup bundle to $TESTTMP/local/.hg/strip-backup/b7f6698b7ad7-backup.hg
+