En Python la commande pdb est très utile pour débugger un programme, mais peut se révéler catastrophique si un pdb.set_trace() reste dans le code,

Car dans le cadre d'un service lancer par un deamon, celui-ci redirige la sortie dans un fichier (stdout, stderr), et bien souvent il n'y a pas de point d'entrée stdin.

Bien sur il ne faut pas bloquer tout l'utilisation de pdb car votre code a surement la partie qui permet de prendre la main correctement. il ne faut donc blqouer que le set_trace()

Pour empêcher le commit du code contenant un pdb.set_trace() il faut créer le fichier pre-commit dans le dossier .git/hooks/ et lui mettre les droits en exécution

touch .git/hooks/pre-commit
chmod u+x .git/hooks/pre-commit

Puis éditer le fichier .git/hooks/pre-commit et ajouté y le code ci-dessous

#!/bin/bash

git diff --cached | grep ^+ | grep 'pdb.set_trace()' > /dev/null
if [ $? = '0' ]; then
    echo "Be carefull, pdb statements found. Please remove them!"
    echo "Run 'git diff --cached' to see what you're about to commit."
    exit 1
fi

La commande git diff --cached permet de voir le diff de ce qui est pret à être commité, corriger le code en retirant la commande incrimée et refaire un git add

La commande git ci -m "Message.." ne devrait plus bloquer.

Pour voir le diff de ce qui va être commiter, j'ai créé l'alias cdiff comme ceci

git config alias.cdiff "diff --cached"

Comments