# HG changeset patch # User Patrick Mezard # Date 1334941914 -7200 # Node ID 1f75c1decdebdfe164741fb64d97a206d9d3b226 # Parent ee553e6cd8c445ff40ed15ca0ab1b9a3636a9ddc 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 diff -r ee553e6cd8c4 -r 1f75c1decdeb mercurial/patch.py --- 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: diff -r ee553e6cd8c4 -r 1f75c1decdeb tests/test-impexp-branch.t --- 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 < 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