changeset 27919:db24d6888896 stable

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.
author Mads Kiilerich <madski@unity3d.com>
date Tue, 19 Jan 2016 06:00:59 +0100
parents c7cd551f07d0
children da5f23362517
files hgext/mq.py tests/test-mq-qimport.t
diffstat 2 files changed, 33 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/mq.py	Tue Jan 19 06:00:30 2016 +0100
+++ b/hgext/mq.py	Tue Jan 19 06:00:59 2016 +0100
@@ -1117,11 +1117,22 @@
         """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
--- a/tests/test-mq-qimport.t	Tue Jan 19 06:00:30 2016 +0100
+++ b/tests/test-mq-qimport.t	Tue Jan 19 06:00:59 2016 +0100
@@ -200,9 +200,8 @@
   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 @@
   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
+