In my code, I sometimes add some FIXME tag (just the FIXME string in a comment or in a debug print). And before staging them in git, I review my diff to check for them. And rarely I miss one FIXME line or debug print, stage it and then commit it. To avoid that, I just wrote a quick pre-commit hook that greps the regexp "[Ff][Ii][Xx][Mm][Ee]"
in staged diff using the command git diff --cached -G "[Ff][Ii][Xx][Mm][Ee]"
.
Here is the full script:
#!/bin/sh
exec 1>&2
FORBIDDEN_RE="[Ff][Ii][Xx][Mm][Ee]"
if [ $(git diff --cached -G "$FORBIDDEN_RE"|wc -l) != 0 ]; then
git --no-pager diff --cached -G "$FORBIDDEN_RE"
echo
echo "ERROR: You're trying to commit a line containing the $FORBIDDEN_RE re"
exit 1
fi
Put that in the file .git/hooks/pre-commit
and next time you're trying to commit a file containing "FIXME", it will abort and print you the involved diff.
Note that you can ignore the pre-commit hook with the following command:
$ git commit --no-verify