Merge branch 'jc/apply-reject-noop-hunk'

"git apply" cannot diagnose a patch corruption when the breakage is
to mark the length of the hunk shorter than it really is on the
hunk header line "@@ -l,k +m,n @@"; one special case it could is
when the hunk becomes no-op (e.g. k == n == 2 for two-line context
patch output), and it learned how to do so.

* jc/apply-reject-noop-hunk:
  apply: reject a hunk that does not do anything
This commit is contained in:
Junio C Hamano 2015-06-24 12:21:39 -07:00
commit 59c465d5c0
2 changed files with 16 additions and 0 deletions

View file

@ -1638,6 +1638,9 @@ static int parse_fragment(const char *line, unsigned long size,
}
if (oldlines || newlines)
return -1;
if (!deleted && !added)
return -1;
fragment->leading = leading;
fragment->trailing = trailing;

View file

@ -16,4 +16,17 @@ test_expect_success 'apply --check exits non-zero with unrecognized input' '
EOF
'
test_expect_success 'apply exits non-zero with no-op patch' '
cat >input <<-\EOF &&
diff --get a/1 b/1
index 6696ea4..606eddd 100644
--- a/1
+++ b/1
@@ -1,1 +1,1 @@
1
EOF
test_must_fail git apply --stat input &&
test_must_fail git apply --check input
'
test_done