Mercurial > hg
changeset 10883:196908117c27 stable
patch: don't look for headers in diff lines
If you have a diff line that matches a header line, the patch splitter
currently breaks your patch at this line. For example a line like:
+key: value
This can lead to "malformed patch" exceptions. Now fixed.
author | Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
---|---|
date | Fri, 09 Apr 2010 20:34:05 +0200 |
parents | c63a6ddbbf9a |
children | 4fb1bafd43e7 9e4d120e3c32 |
files | mercurial/patch.py tests/test-import tests/test-import.out |
diffstat | 3 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/patch.py Fri Apr 09 15:14:43 2010 +0200 +++ b/mercurial/patch.py Fri Apr 09 20:34:05 2010 +0200 @@ -47,6 +47,9 @@ if inheader and line[0] in (' ', '\t'): # continuation return True + if line[0] in (' ', '-', '+'): + # diff line - don't check for header pattern in there + return False l = line.split(': ', 1) return len(l) == 2 and ' ' not in l[0]
--- a/tests/test-import Fri Apr 09 15:14:43 2010 +0200 +++ b/tests/test-import Fri Apr 09 20:34:05 2010 +0200 @@ -474,3 +474,24 @@ hg sum hg diff --git -c tip cd .. + +echo '% diff lines looking like headers' +hg init difflineslikeheaders +cd difflineslikeheaders +echo a >a +echo b >b +echo c >c +hg ci -Am1 + +echo "key: value" >>a +echo "key: value" >>b +echo "foo" >>c +hg ci -m2 + +hg up -C 0 +hg diff --git -c1 >want +hg diff -c1 | hg import --no-commit - +hg diff --git >have +diff want have +cd .. +
--- a/tests/test-import.out Fri Apr 09 15:14:43 2010 +0200 +++ b/tests/test-import.out Fri Apr 09 20:34:05 2010 +0200 @@ -373,3 +373,9 @@ diff --git a/src/cmd/gc/mksys.bash b/src/cmd/gc/mksys.bash old mode 100644 new mode 100755 +% diff lines looking like headers +adding a +adding b +adding c +3 files updated, 0 files merged, 0 files removed, 0 files unresolved +applying patch from stdin