-
Notifications
You must be signed in to change notification settings - Fork 58
/
pre-commit.sh
executable file
·25 lines (23 loc) · 1.11 KB
/
pre-commit.sh
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
#!/bin/sh
#
# A git hook script to find and fix trailing whitespace in your commits. Bypass
# it with the --no-verify option to git-commit.
#
# Original source: http://web.archive.org/web/20120605081123/http://blog.yesmeck.com/archives/make-git-automatically-remove-trailing-whitespace-before-committing/
#
# What's distinct about this version, as opposed to several I've seen, is that
# it only fixes the whitespace on lines you've actually changed, so avoids
# making you the blamee of code you didn't change.
# Find files with trailing whitespace
for file in `git diff --check --cached | grep '^[^+-]' | grep -o '^.*[0-9]\+:'` ; do
file_name=`echo ${file} | grep -o '^[^:]\+'`
# Uses perl because "grep -P" doesn't work on OS X
line_number=`echo ${file} | perl -nle'print $& if m{(?<=:)[0-9]+(?=:)}'`
# Different OSes have different sed's; try the one that works.
(sed -i "${line_number}s/\s*$//" "${file_name}" > /dev/null 2>&1 \
|| sed -i '' -E "${line_number}s/[[:space:]]*$//" "${file_name}")
git add ${file_name}
echo "Re-wrote ${file_name} to trim whitespace."
done
# Now we can commit
exit