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>
--- 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