When we see `--whitespace=fix` we don't consider a possible option: `--no-ignore-whitespace`. The following example produces unexpected, at least for me, results:
$ printf "a \nb\nc\n" >file
$ git add file
$ cat >patch <<END
--- a/file
+++ b/file
@@ -1,3 +1,2 @@
a
-b
c
END
$ git apply --no-ignore-whitespace --whitespace=fix patch
$ xxd file
00000000: 610a 630a a.c.`git apply` should fail because the context line with 'a' doesn't match the line with 'a ' in the file.
This series aims to make `--whitespace=fix` strictly match context lines even if they have whitespace errors.
Adding a new `ignore_ws_default` is intended to reduce the blast radius of changing the behavior of `--whitespace=fix`. Perhaps there are better ways to do this. I'm open to suggestions.
The last two patches [4-5/5] contain minor code improvements I made while reading the code working on this series. They can be discarded if anyone has concerns.
Thanks.
Rubén Justo (4): apply: introduce `ignore_ws_default` apply: honor `ignore_ws_none` with `correct_ws_error` apply: whitespace errors in context lines if we have `ignore_ws_none` apply: error message in `record_ws_error()` t4124: move test preparation into the test context
apply.c | 17 ++++++++-------- apply.h | 1 + t/t4124-apply-ws-rule.sh | 44 +++++++++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 22 deletions(-)
-- 2.46.0.353.g385c909849