rebase: always check if rebasing onto an applied mq patch.
Previously, it only checked for an mq patch if the user explicitly
passed -d/--dest. But rebasing onto an mq patch is a bad idea
regardless of how we determine the rebase destination.
--- a/hgext/rebase.py Fri Mar 05 17:38:02 2010 -0500
+++ b/hgext/rebase.py Tue Mar 02 15:08:43 2010 -0500
@@ -440,11 +440,15 @@
branch = repo[None].branch()
dest = repo[branch].rev()
else:
- if 'qtip' in repo.tags() and (repo[dest].hex() in
- [s.rev for s in repo.mq.applied]):
- raise util.Abort(_('cannot rebase onto an applied mq patch'))
dest = repo[dest].rev()
+ # This check isn't strictly necessary, since mq detects commits over an
+ # applied patch. But it prevents messing up the working directory when
+ # a partially completed rebase is blocked by mq.
+ if 'qtip' in repo.tags() and (repo[dest].hex() in
+ [s.rev for s in repo.mq.applied]):
+ raise util.Abort(_('cannot rebase onto an applied mq patch'))
+
if src:
commonbase = repo[src].ancestor(repo[dest])
if commonbase == repo[src]:
--- a/tests/test-rebase-mq Fri Mar 05 17:38:02 2010 -0500
+++ b/tests/test-rebase-mq Tue Mar 02 15:08:43 2010 -0500
@@ -45,6 +45,12 @@
hg rebase -s 1 -d 3
echo
+echo '% Rebase - same thing, but mq patch is default dest'
+hg update -q 1
+hg rebase
+hg update -q qtip
+
+echo
echo '% Rebase - generate a conflict'
hg rebase -s 2 -d 1
--- a/tests/test-rebase-mq.out Fri Mar 05 17:38:02 2010 -0500
+++ b/tests/test-rebase-mq.out Tue Mar 02 15:08:43 2010 -0500
@@ -11,6 +11,9 @@
% Rebase - try to rebase on an applied mq patch
abort: cannot rebase onto an applied mq patch
+% Rebase - same thing, but mq patch is default dest
+abort: cannot rebase onto an applied mq patch
+
% Rebase - generate a conflict
merging f
warning: conflicts during merge.