Skip to content

Instantly share code, notes, and snippets.

@jcarsique
Created November 25, 2013 15:30
Show Gist options
  • Save jcarsique/7643059 to your computer and use it in GitHub Desktop.
Save jcarsique/7643059 to your computer and use it in GitHub Desktop.
Git pre-commit hook
#!/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
#
if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Find files with trailing whitespace
for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | (sed -r 's/:[0-9]+:.*//' > /dev/null 2>&1 || sed -E 's/:[0-9]+:.*//') | uniq` ; do
# Fix them!
(sed -i 's/[[:space:]]*$//' "$FILE" > /dev/null 2>&1 || sed -i '' -E 's/[[:space:]]*$//' "$FILE")
error=true
done
if [ "$error" = true ]; then
echo Trailing whitespace found!
echo Check the modified files with 'git diff --staged --check'
echo Confirm the changes with 'git commit --no-verify'
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment