[PATCH 2 of 2 stable] mq: check for reserved patch name with qimport -r (issue5033)

Mads Kiilerich mads at kiilerich.com
Mon Jan 18 23:01:52 CST 2016


# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1453179659 -3600
#      Tue Jan 19 06:00:59 2016 +0100
# Branch stable
# Node ID e5752aec54d89d3d8cb11d0c1c456a1fce57a1bf
# Parent  8e01eb2737b8cdaaf1c8aacdd7fe90664b9c6836
mq: check for reserved patch name with qimport -r (issue5033)

Fix regression from 143b52fce68e.

Catching aborts might not be pretty but it works and is a small change.

diff --git a/hgext/mq.py b/hgext/mq.py
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -1117,11 +1117,22 @@ class queue(object):
         """Return a suitable filename for title, adding a suffix to make
         it unique in the existing list"""
         namebase = re.sub('[\s\W_]+', '_', title.lower()).strip('_')
-        if not namebase:
+        if namebase:
+            try:
+                self.checkreservedname(namebase)
+            except error.Abort:
+                namebase = fallbackname
+        else:
             namebase = fallbackname
         name = namebase
         i = 0
-        while name in self.fullseries:
+        while True:
+            if name not in self.fullseries:
+                try:
+                    self.checkpatchname(name)
+                    break
+                except error.Abort:
+                    pass
             i += 1
             name = '%s__%s' % (namebase, i)
         return name
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
@@ -200,9 +200,8 @@ try to import --push
   patch b.diff finalized without changeset message
   $ touch .hg/patches/append_foo
   $ hg qimport -r 'p1(.)::'
-  abort: patch "append_foo" already exists
-  [255]
   $ hg qapplied
+  append_foo__1
   append_bar
   $ hg qfin -a
   $ rm .hg/patches/append_foo
@@ -313,3 +312,22 @@ check patch name generation for non-alph
   2 U 0
   3 U this-name-is-better
   4 U url.diff
+
+check reserved patch names
+
+  $ hg qpop -qa
+  patch queue now empty
+  $ echo >> b
+  $ hg commit -m 'status'
+  $ echo >> b
+  $ hg commit -m '.'
+  $ echo >> b
+  $ hg commit -m 'taken'
+  $ mkdir .hg/patches/taken
+  $ touch .hg/patches/taken__1
+  $ hg qimport -r -3::
+  $ hg qap
+  1.diff__1
+  2.diff
+  taken__2
+


More information about the Mercurial-devel mailing list