What are considered whitespace errors is controlled by core. whitespace configuration. By default, trailing whitespaces (including lines that solely consist of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors.
You can prefix - to disable any of them (e.g. -trailing-space ): ### blank-at-eol treats trailing whitespaces at the end of the line as an error (enabled by default).
You don't need to care.
The warning enacts a standard of cleanliness of text files in regard to whitespace, the kind of thing that many programmers tend to care about. As the manual explains:
What are considered whitespace errors is controlled by core.whitespace configuration. By default, trailing whitespaces (including lines that solely consist of whitespaces) and a space character that is immediately followed by a tab character inside the initial indent of the line are considered whitespace errors.
By default, the command outputs warning messages but applies the patch.
So, the "error" means that the change introduces a trailing whitespace, a whitespace-only line, or a space that precedes a tab. Other than that fact, there is nothing erroneous about the change, and it will apply cleanly and correctly. In other words, if you don't care about the "incorrect" whitespace, feel free to ignore the warning or turn it off with git config apply.whitespace nowarn
.
One case when you could legitimately care is when you want to differentiate between "old" whitespase error (that you might want to keep for legacy reason) and "new" whitespace errors (that you want to avoid).
To that effect, Git 2.5+ (Q2 2015) will propose a more specific option for whitespace detection.
See commits 0e383e1, 0ad782f, and d55ef3e [26 May 2015] by Junio C Hamano (gitster
).
(Merged by Junio in commit 709cd91, 11 Jun 2015)
diff.c
:--ws-error-highlight=<kind>
optionTraditionally, we only cared about whitespace breakages introduced in new lines.
Some people want to paint whitespace breakages on old lines, too. When they see a whitespace breakage on a new line, they can spot the same kind of whitespace breakage on the corresponding old line and want to say "Ah, those breakages are there but they were inherited from the original, so let's not touch them for now."Introduce
--ws-error-highlight=<kind>
option, that lets them pass a comma separated list ofold
,new
, andcontext
to specify what lines to highlight whitespace errors on.
The documentation now includes:
--ws-error-highlight=<kind>
Highlight whitespace errors on lines specified by
<kind>
in the color specified bycolor.diff.whitespace
.<kind>
is a comma separated list ofold
,new
,context
.
When this option is not given, only whitespace errors innew
lines are highlighted.E.g.
--ws-error-highlight=new,old
highlights whitespace errors on both deleted and added lines.all
can be used as a short-hand forold,new,context
.
For instance, the old commit had one whitespace error (bbb
), but you can focus on the new errors only (at the end of still bbb
and ccc
):
(test done after t/t4015-diff-whitespace.sh
)
With Git 2.26 (Q1 2020), the diff-*
plumbing family of subcommands now pay attention to the diff.wsErrorHighlight
configuration, which has been ignored before; this allows "git add -p
" to also show the whitespace problems to the end user.
See commit da80635 (31 Jan 2020) by Jeff King (peff
).
(Merged by Junio C Hamano -- gitster
-- in commit df04a31, 14 Feb 2020)
diff
: move diff.wsErrorHighlight to "basic" configSigned-off-by: Jeff King
We parse diff.wsErrorHighlight in
git_diff_ui_config()
, meaning that it doesn't take effect for plumbing commands, only for porcelains likegit diff
itself.
This is mildly annoying as it means scripts likeadd--interactive
, which produce a user-visible diff with color, don't respect the option.We could teach that script to parse the config and pass it along as
--ws-error-highlight
to the diff plumbing. But there's a simpler solution.It should be reasonably safe for plumbing to respect this option, as it only kicks in when color is otherwise enabled. And anybody parsing colorized output must already deal with the fact that
color.diff.*
may change the exact output they see; those options have been part ofgit_diff_basic_config()
since its inception in 9a1805a872 (add a "basic" diff config callback, 2008-01-04, Git v1.5.4-rc3).So we can just move it to the "basic" config, which fixes
add--interactive
, along with any other script in the same boat, with a very low risk of hurting any plumbing users.
The whitespace error with visual images is shown here.
http://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project#Commit-Guidelines
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With