Make git automatically remove trailing whitespace before committing

Last post I wrote a simple script to make git check trailing whitespace before committing.Today, I improve the script to make git automatically remove whitespace for us.

Here it is.

#!/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
#

# Find files with trailing whitespace
for file in `git diff --check --cached | grep '^[^+-]' | grep -o '^.*[0-9]\+:'` ; do
    file_name=`echo ${file} | grep -o '^[^:]\+'`
    line_number=`echo ${file} | grep -oP '(?<=:)[0-9]+(?=:)'`
    (sed -i "${line_number}s/\s*$//" ${file_name} > /dev/null 2>&1 \
        || sed -i '' -E "${line_number}s/\s*$//" ${file_name})
    git add ${file_name}
done

# Now we can commit
exit
Meck 24 December 2011
blog comments powered by Disqus