diff options
author | Andreas Gruenbacher <agruen@gnu.org> | 2015-03-09 15:17:31 -0400 |
---|---|---|
committer | Andreas Gruenbacher <agruen@gnu.org> | 2015-03-09 15:29:15 -0400 |
commit | 5c6625bf62a81c114d849faa1a9cc95c126034a5 (patch) | |
tree | f8730bd7b6074ce1121742a5896ee685c168742a | |
parent | 6a55099e7ad90997ea26cb3dc938b3e4d71cdec1 (diff) | |
download | patch-5c6625bf62a81c114d849faa1a9cc95c126034a5.tar.gz |
Don't require traditional patch header after "git --diff"
Reported by Tim Waugh <twaugh@redhat.com>.
* src/pch.c (intuit_diff_type): Don't require a traditional patch header
("--- old\n+++ new/n") after a "git --diff" header; the "git --diff" header
gives us enough information for being able to process subsequent hunks. This
deals with corrupted patches more gracefully.
* tests/corrupt-patch: New test case.
* tests/Makefile.am (TESTS): Add test case.
-rw-r--r-- | src/pch.c | 1 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/corrupt-patch | 33 |
3 files changed, 35 insertions, 0 deletions
@@ -622,6 +622,7 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) p_name[i] = 0; } p_git_diff = true; + need_header = false; } else if (p_git_diff && strnEQ (s, "index ", 6)) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 91c9dce..a3ef97a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -23,6 +23,7 @@ TESTS = \ bad-usage \ concat-git-diff \ copy-rename \ + corrupt-patch \ corrupt-reject-files \ create-delete \ create-directory \ diff --git a/tests/corrupt-patch b/tests/corrupt-patch new file mode 100644 index 0000000..4f8e121 --- /dev/null +++ b/tests/corrupt-patch @@ -0,0 +1,33 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# in any medium, are permitted without royalty provided the copyright +# notice and this notice are preserved. + +. $srcdir/test-lib.sh + +require cat +use_local_patch +use_tmpdir + +# ============================================================== + +# Patch missing the traditional "--- old\n+++ new\n" header + +cat > test.diff <<EOF +diff --git a/test b/test +index 8e139fc..4c03766 100644 +@@ -1 +1 @@ +-a ++b +EOF + +echo a > test + +check 'patch -p1 -i test.diff' <<EOF +patching file test +EOF + +check 'cat test' <<EOF +b +EOF |