mq qnew -f should reject merge working directories

timeless timeless at gmail.com
Wed Dec 23 05:36:51 CST 2009


Oops, small carryover gunk. Here's a cleaner version:

# HG changeset patch
# User timeless at mozdev.org
# Date 1261568113 -7200
# Node ID a96c99f6a2bc916fd69db5d196b4049b0ea9dfde
# Parent  8e91155d264374c6a3ab99679b773db5f612970e
mq qnew -f should reject merge working directories

diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -770,6 +770,10 @@ class queue(object):
         else:
             m, a, r, d = self.check_localchanges(repo, force)
             match = cmdutil.matchfiles(repo, m + a + r)
+        if force:
+            p = repo[None].parents()
+            if len(p) != 1:
+                raise util.Abort(_('cannot manage merge changesets'))
         commitfiles = m + a + r
         self.check_toppatch(repo)
         insert = self.full_series_end()
diff --git a/tests/test-mq-qnew b/tests/test-mq-qnew
--- a/tests/test-mq-qnew
+++ b/tests/test-mq-qnew
@@ -58,3 +58,18 @@ cat ../.hg/patches/p
 echo '% qnew -u with no username configured'
 HGUSER= hg qnew -u blue red
 cat ../.hg/patches/red
+
+hg init merge
+cd merge
+touch a
+hg ci -Am null
+echo a >> a
+hg ci -m a
+hg up -r 0
+echo b >> a
+hg ci -m b
+hg merge -f 1
+hg resolve --mark a
+hg qnew -f merge
+
+exit 0
diff --git a/tests/test-mq-qnew.out b/tests/test-mq-qnew.out
--- a/tests/test-mq-qnew.out
+++ b/tests/test-mq-qnew.out
@@ -35,3 +35,12 @@ diff --git a/d/b b/d/b
 % qnew -u with no username configured
 From: blue

+adding a
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+created new head
+merging a
+warning: conflicts during merge.
+merging a failed!
+0 files updated, 0 files merged, 0 files removed, 1 files unresolved
+use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
+abort: cannot manage merge changesets


More information about the Mercurial-devel mailing list