Voici donc une situation intéressante lors de l'utilisation de git et de python, et je suis sûr que cela arrive pour d'autres situations.
Disons que je fais un repo git avec un dossier /toto/. Dans ce dossier j'ai mis /foo/program.py. - Je exécuter program.py et le programme.pyc est créé. J'ai *.pyc dans le .gitignore fichier, de sorte que git n'a pas le suivre.
Maintenant, disons que je fais une autre branche, dev. Dans cette branche dev, j'ai supprimer le /foo/ dossier entièrement.
Maintenant je passe à la branche principale, et /foo/ réapparaît. Je lance le program.py et le programme.pyc fichier réapparaît. Tout est bien.
- Je revenir à ma branche dev. Le répertoire /foo/ devraient disparaître. Il n'existe que dans la branche master, pas de la branche dev. Cependant, il est toujours là. Pourquoi? Parce que le ignorés programme.pyc fichier empêche le dossier supprimé lors de la commutation de branches.
La solution à ce problème est de supprimer de manière récursive tous les *.pyc fichiers avant de passer les branches. Je peux le faire facilement avec cette commande.
find . -name "*.pyc" -exec rm '{}' ';'
Le problème est qu'il est ennuyeux d'avoir à vous rappeler de le faire cela presque à chaque fois que je change les branches. J'ai pu faire un alias pour cette commande, mais je dois encore n'oubliez pas de taper à chaque fois que je change les branches. Je pourrais aussi faire un alias pour la commande git-branche, mais ce n'est pas bon non plus. La commande git branch fait d'autres choses d'ailleurs il suffit de changer les branches, et je ne veux pas supprimer tous les pyc fichiers chaque fois que je l'utilise. Zut, je pourrais même l'utiliser dans un non-python pensions, alors quoi?
Est-il un moyen de définir un git crochet qui s'exécute seulement quand je change de branches? Ou est-il un autre moyen de régler tous *.pyc des fichiers effacés à chaque fois que je changer de branches?