Le nom « Conventional Commit Messages » est utilisé pour définir un ensemble de règles d’écriture de meilleurs messages de commit afin qu’ils soient compréhensibles par tous et utilisables par tout membre d’une équipe sans difficulté ni contrainte.
Autre intérêt, le respect de ces règles permet d’utiliser des outils de génération automatique d’un CHANGELOG.
Modèle de message de commit
type[optional scope]: short description [body with longer description, if needed] [optional footer part for extra informations]
Le type indiquera la nature du commit, afin de savoir en un mot s’il s’agit d’un commit lié à une fonctionnalité, un correctif, de la documentation, des tests etc.
Optionnellement, le type peut s’accompagner de la portée du commit, afin de préciser par exemple la fonctionnalité ou le domaine technique qui est impacté par le commit. Exemples : api, authentification…
Une description très courte, comme un titre, indique en quelques mots l’objet du commit.
Optionnellement, le corps du message peut être présent avec une explication plus détaillée du contenu du commit. Suite de phrases ou sous forme d’énumération, on peut détailler les modifications apportées.
Optionnellement, un équivalent pied-de-page peut être présent pour fournir des indications comme indiquer un breaking-change, la référence d’un ticket ou d’un autre commit.
Exemples
feat(shared sessions): setting up shared sessions - Setteing up a REDIS server with the sysadmin - Usage of REDIS server instead of default sessions directory BREAKING CHANGE: REDIS server is now needed Refs: #MC-4789 Closes: #MC-4789
Les différentes natures de commit
| Mot-clé de la nature | Explication |
|---|---|
| feat | Fonctionnalité, nouvellement ajoutée ou bien ayant évoluée. |
| fix | Correctif d’un bug. |
| docs | Documentation. |
| style | Changement du code n’impactant pas son comportement (indentation, formatage…). |
| refactor | Refactoring de code. |
| perf | Amélioration des performances. |
| test | Ajout ou modification des tests. |
| build | Changement lié au système de build ou bien aux dépendances. |
| ci | Changements dans la configuration ou les scripts de la CI. |
| chore | Changement plutôt bas niveau, non liés au domaine métier. |