Introduction à git hooks
Un problème que l’on rencontre souvent lorsque l’on utilise git, est que l’on a du mal à avoir des messages de commits réguliers. On se retrouve souvent au début d’un projet à écrire des messages bien formatés type:
Puis à la fin du projet nous avons des commits comme:
Et ça devient très vite l’enfer ! Aussi bien pour nous que pour les collaborateurs du projet. Et retrouver un commit précis dans ce bazar est compliqué à terme.
Introduction
La solution efficace est d’utiliser les ‘git hooks’.
GIT à un système qui lance un script lorsque l’on réalise des actions importantes avec. Les principaux hooks sont:
-
applypatch-msg
-
pre-commit
-
prepare-commit-msg
-
commit-msg
-
post-commit
-
post-checkout
-
pre-receive
-
update
-
post-update
Évidemment il y en a beaucoup d’autres, mais je ne les présenterai pas ici. Je vous conseille de lire la documentation si vous êtes curieux :D
Des hooks peuvent être mis en place côté client ou côté serveur !
Tous ces hooks de base se trouvent dans le répertoire $USER/.git/hooks
.
Voici les hooks génériques que l’on peut utiliser.
Mise en place
Solution 1 - Hooks locaux
La première solution est d’aller là où est votre projet git. Le chemin est .git/hooks/. Ici vous retrouverez la liste des hooks mis en place uniquement pour ce projet courant.
Cette solution permet aussi d’installer un hook côté serveur, en initialisant un projet avec git init --bare
, et d’aller également dans .git/hooks/.
Solution 2 - Mettre les scripts dans $HOME/.git/hooks/
La deuxième solution est d’ajouter des hooks dans le dossier $HOME/.git/hooks/
. Les hooks sont ajoutés dès la prochaine commande git
.
Solution 3 - Mettre les scripts dans un dossier personnalisé
Ma solution de mise en place est la suivante, j’ai ajouté dans le fichier $HOME/.gitconfig
les lignes suivantes:
Cette solution a pour avantage d’être plus facilement exportable si vous avons nos hooks dans un endroit spécifique.
Cette ligne ajoute le répertoire de hooks. Puis nous pouvons créer le dossier correspondant dans /$HOME/git/hooks
(ou dans le répertoire de votre choix).
Utilisation
Ici nous allons parler du hook commit-msg, mais cela fonctionne presque de la même manière pour les autres hooks.
Pour le hook en question, le script se lancera à chaque fois que mon utilisateur lancera un commit. Si ce script sort avec un code de sortie non nul, git abandonne le processus de validation, et le commit sera annulé.
Exemple de hooks
Voilà la partie intéressante ! Voici un exemple de git hooks commit-msg:
Attention: n’oubliez pas d’ajouter les permissions
nécessaires pour que votre hooks soit exécutable avec chmod ug+x .git/hooks/*
Si le message du commit ne correspond pas à l’expression régulière ci-dessus, alors git abandonnera la création du commit.
Ce script est inspiré de la convention de nommage d’AngularJS
Une autre chose rigolote que l’on peut faire avec est d’ajouter des émojis si le message du commit est formaté d’une certaine manière !
De nombreuses pages sur github encouragent ce système de commit qui rend les choses plus attrayantes et visuelles.
Conclusion
Les hooks vous permettent de lancer des scripts lorsqu’une action git est effectuée. Cela fonctionne aussi bien côté client que serveur.
Vous pouvez utiliser de nombreux événements (cf: doc) afin d’automatiser le plus de tâches possible !
Vous êtes libre d’utiliser ce super pouvoir comme bon vous semble maintenant !
Simplifiez les conditions avec les opérateurs logiques et opérateurs ternaires
Découvrez une nouvelle manière de simplifier votre code
Écrivez plus vite en HTML avec Emmet
Ne vous embêtez plus avec les balises !
Introduction à Vim
Devenez un super développeur grâce à Vim !
Introduction aux jobs linux
Gagnez en rapidité avec les jobs