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