1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
I don't like trailing white spaces in my source code. I've configured my editors to highlight them
so I don't add them by accident, and when possible, I remove them. But it doesn't mean that all of
them should be removed blindly.
In this post, I'm talking about files that are managed by a SCM. When working on such a text file,
editor's hooks that delete them when writing a file can be more annoying than keeping them in place.
A change should only touch lines that are relevant to the fix or feature beeing added. Touching
lines that are not relevant are creating noise in the history. I've made this mistake in the past,
and I've learned my lessons.
## Pain for the reviewer
The person who will review the change will have to make an extra effort to understand why the diff
highlight some lines where it looks like there's no change. It's a distraction to his main task, and
it doesn't bring any benefit to the change beeing submitted.
## Pain for the person browsing the history
When someone browse the history and try to understand what changed between two versions, the
deletion is just noise. It's already hard to make the mental effort to read a diff, and understand
what and why things have changed. Adding some extra noise is annoying.
Running a tool like `git blame` shows how useless this is, for both the person reading the history
and the author.
## Tips
Configure your editor to highlight them. If you are using Emacs, you can do it with
```
(require 'whitespace)
(global-whitespace-mode 1)
(setq whitespace-style '(face trailing tabs tab-mark))
```
With vim, you can add the following:
```
set list lcs=trail:·,tab:»·
highlight ExtraWhitespace ctermbg=red guibg=red
```
It's also possible to configure `git` to highlight them when running `git add -p`, by running
```
git config --global core.whitespace trailing-space,space-before-tab
```
`git` will complain if it finds white spaces in your change, so you have time to fix and remove
them.
If you really don't want any trailing white spaces, you can also configure your SCM with a
post-commit hook to reject commits that contains them.
If you're using `vimdiff` to read a diff, it's possible to not highlight white spaces with `set
diffopt+=iwhite`. This can makes it a little bit easier to read messy diff.
|