We are having an issue in our team and we have decided to check if there is a way or git command to reject git push where there are TODOs in the code. Any ideas? Thanks in advance.
Asked
Active
Viewed 3,854 times
2 Answers
20
EDIT: because of grep behaviour in if statement we needed to edit our script:
#!/bin/sh
for FILE in `git diff --name-only --cached`; do
grep 'TODO' $FILE 2>&1 >/dev/null
if [ $? -eq 0 ]; then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
Is not possible use pre-receive hooks in github, so we are using instead pre-commit hook in client side: http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Client-Side-Hooks
Our pre-commit script (based on http://mark-story.com/posts/view/using-git-commit-hooks-to-prevent-stupid-mistakes) looks like:
#!/bin/sh
for FILE in `git diff-index -p -M --name-status HEAD -- | cut -c3-` ; do
if [ "grep 'TODO' $FILE" ]
then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
We have this script under our control version system, and create a symbolic link to it in .git/hooks
Thanks for the help :)
-
4Don't forget to `chmod +x .git/hooks/pre-commit` after creating the file – dutzi Dec 18 '15 at 01:46
4
Pre-receive hook on the server, grep the files and abort the push :)
More info on the pre-receive hook can be found here: http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Server-Side-Hooks

Christopher Valles
- 133
- 2
- 9
-
Any ideas or link where to read about this working in github? Our project is hosted on github and I only see the post-receive hook :? Of course we can use client-side hooks (like the pre-commit hook), but then we need to create it in all our machines. Thanks for your help :) – hosseio Dec 14 '12 at 16:45