When we see `--whitespace=fix` we don't consider a possible option: `--no-ignore-whitespace`. The expected result in the following example is a failure when applying the patch, however: $ 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. This unexpected result will be addressed in an upcoming commit. As a preparation, we need to detect when the user has explicitly said `--no-ignore-whitespace`. Let's add a new value: `ignore_ws_default`, and use it to initialize `ws_ignore_action` in `init_apply_state()`. This will allow us to distinguish whether the user has explicitly set any value for `ws_ignore_action` via `--[no-]ignore-whitespace` or via `apply.ignoreWhitespace`. Currently, we only have one explicit consideration for `ignore_ws_change`, and no, implicit or explicit, considerations for `ignore_ws_none`. Therefore, no modification to the existing logic is required in this step. Signed-off-by: Rubén Justo <rjusto@xxxxxxxxx> --- apply.c | 2 +- apply.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apply.c b/apply.c index 6e1060a952..63e58086f1 100644 --- a/apply.c +++ b/apply.c @@ -115,7 +115,7 @@ int init_apply_state(struct apply_state *state, state->p_context = UINT_MAX; state->squelch_whitespace_errors = 5; state->ws_error_action = warn_on_ws_error; - state->ws_ignore_action = ignore_ws_none; + state->ws_ignore_action = ignore_ws_default; state->linenr = 1; string_list_init_nodup(&state->fn_table); string_list_init_nodup(&state->limit_by_name); diff --git a/apply.h b/apply.h index cd25d24cc4..201f953a64 100644 --- a/apply.h +++ b/apply.h @@ -16,6 +16,7 @@ enum apply_ws_error_action { }; enum apply_ws_ignore { + ignore_ws_default, ignore_ws_none, ignore_ws_change }; -- 2.46.0.353.g385c909849