25 points par ironlung 2023-06-14 | 2 commentaires | Partager sur WhatsApp

*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-receive un 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 .husky des fichiers de hook contenant les scripts. Ensuite, la commande npx husky install enregistre 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.ts les 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 commitlint dans le hook commit-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

 
yangeok 2023-06-20

C’est aussi bien à utiliser avec commitizen.

 
roxie 2023-06-24

Merci pour cet excellent outil.