gitpushtodo

How to disable git push when there are TODOs in code?


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.


Solution

  • 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 :)