Git – Conventional Commit Messages

par

dans

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 natureExplication
featFonctionnalité, nouvellement ajoutée ou bien ayant évoluée.
fixCorrectif d’un bug.
docsDocumentation.
styleChangement du code n’impactant pas son comportement (indentation, formatage…).
refactorRefactoring de code.
perfAmélioration des performances.
testAjout ou modification des tests.
buildChangement lié au système de build ou bien aux dépendances.
ciChangements dans la configuration ou les scripts de la CI.
choreChangement plutôt bas niveau, non liés au domaine métier.