Protection contre les commit avec pdb.set_trace() avec Git
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"