Comment automatiser les messages de commit Git
(insight.infograb.net)*Quand rédiger un message de commit Git devient pénible
- Les messages de commit avec des émojis et des numéros d’issue sont faciles à suivre et agréables à lire
- Mais plus un message de commit est long et complexe, plus c’est contraignant à chaque fois et plus les erreurs sont fréquentes
- Chercher le bon émoji à chaque fois est une corvée
*Imposer les messages de commit Git avec les Git Hooks
- Les Git Hooks sont une fonctionnalité qui exécute les scripts que nous définissons lorsqu’un événement lié à Git se produit
- Cette fonctionnalité se divise en hooks serveur et hooks client
*Hook serveur : utiliser la fonctionnalité push rule de Git
- Si l’on place dans le hook
pre-receiveun script qui vérifie les messages de commit, on peut empêcher leur push vers le serveur - Dans GitLab, la fonctionnalité push rule permet de vérifier les messages de commit avec des expressions régulières
- Si un message de commit qui enfreint l’expression régulière est détecté, le push correspondant est refusé et une erreur est générée
*Hook client : vérifier à l’avance avant le push
- Il est possible de créer un script dans le hook
commit-msg, avant la finalisation du commit, pour vérifier le message de commit - Si l’on veut modifier le message de commit, il faut écrire le script correspondant dans le hook
prepare-commit-msg
*La méthode d’automatisation des messages de commit chez Infograb
- Mise en place d’un système d’automatisation des messages de commit avec Husky et Commitlint
- Husky est un module npm qui aide à gérer les Git Hooks. Il crée sous le répertoire
.huskydes fichiers de hook contenant les scripts. Ensuite, la commandenpx husky installenregistre ces scripts dans Git - commitlint est un outil qui permet de gérer facilement les conventions de commit et de vérifier les messages de commit. Les conventions définies par l’équipe sont écrites au format JSON. Il est alors possible de vérifier les messages avec la commande
commitlint
1)Définir la convention de commit au format commitlint
- Définir dans le fichier
commitlint.config.tsles propriétés adaptées à chaque équipe, à partir de la structure de base du message de commit
2)Enregistrer commitlint dans Husky
- Enregistrer la commande
commitlintdans le hookcommit-msg. Ajouter le script dans le fichier.husky/commit-msg
3)Ajouter de l’automatisation
- Automatiser l’ajout d’émojis ou l’insertion de numéros d’issue
- Dans l’équipe produit d’Infograb, il suffit de saisir le type (
feat,fix) pour que l’émoji soit ajouté automatiquement, que la première lettre du type soit automatiquement mise en majuscule, et que le numéro d’issue soit automatiquement ajouté dans le footer si la branche en contient un - Le script d’automatisation peut être placé dans le hook
prepare-commit-msg
2 commentaires
C’est aussi bien à utiliser avec commitizen.
Merci pour cet excellent outil.