patch: be more tolerant with "Parent" header (issue3356) stable
authorPatrick Mezard <patrick@mezard.eu>
Fri, 20 Apr 2012 19:11:54 +0200
branchstable
changeset 16475 1f75c1decdeb
parent 16474 ee553e6cd8c4
child 16476 83622954b64d
patch: be more tolerant with "Parent" header (issue3356) Here is how export and mq write the "Parent" header: mq: # Parent XXXXX export: # Parent XXXXX then import expects exactly 2 spaces while mq tolerates one or more. So "hg import --exact" truncates mq generated patches header by one character and fails. This patch aligns import "Parent" header parsing on mq one. I do not expect spaces in parent references anytime soon. Reported by Stefan Ring <stefanrin@gmail.com>
mercurial/patch.py
tests/test-impexp-branch.t
--- a/mercurial/patch.py	Thu Apr 19 17:08:12 2012 +0200
+++ b/mercurial/patch.py	Fri Apr 20 19:11:54 2012 +0200
@@ -230,7 +230,7 @@
                         elif line.startswith("# Node ID "):
                             nodeid = line[10:]
                         elif line.startswith("# Parent "):
-                            parents.append(line[10:])
+                            parents.append(line[9:].lstrip())
                         elif not line.startswith("# "):
                             hgpatchheader = False
                     elif line == '---' and gitsendmail:
--- a/tests/test-impexp-branch.t	Thu Apr 19 17:08:12 2012 +0200
+++ b/tests/test-impexp-branch.t	Fri Apr 20 19:11:54 2012 +0200
@@ -1,3 +1,6 @@
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo 'mq =' >> $HGRCPATH
+
   $ cat >findbranch.py <<EOF
   > import re, sys
   > 
@@ -55,3 +58,14 @@
   applying ../r0.patch
   $ hg import --exact ../r1.patch
   applying ../r1.patch
+
+Test --exact and patch header separators (issue3356)
+
+  $ hg strip --no-backup .
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  >>> import re
+  >>> p = file('../r1.patch', 'rb').read()
+  >>> p = re.sub(r'Parent\s+', 'Parent ', p)
+  >>> file('../r1-ws.patch', 'wb').write(p)
+  $ hg import --exact ../r1-ws.patch
+  applying ../r1-ws.patch