GitCommitMessage.md

Inspiré par codeheroes

Règles relatives aux messages de Commit

Nommer les branches

En dehors des branches develop et master, comment nommer nos autres branches ?

Rien de bien sorcier, nous allons simplement indiquer le type de la branche suivi du nom de celle-ci, optionnellement nous pouvons ajouter le numéro du ticket. Le tout doit être séparé par le caractère slash “/” :

<type>/<name>/<issue_ID>

Les types de branches

Commit type Desciption Emoji
feature Ajout d’une nouvelle fonctionnalité
bugfix Correction d’un bug 🐛
hotfix Correction d’un bug critique 🚑
chore Nettoyage du code 🧼
experiment Expérimentation de fonctionnalités 🚨

Le nom de la branche

Le nom de la branche décrit succinctement le but de celle-ci. Certaines règles doivent être respectées :

  • Le nom doit faire moins de 50 caractères
  • Le nom doit respecter la convention kebab-case (les mots doivent être en minuscule et liés par des tirets “-“)

Le numéro de ticket

Pour le suivi de vos tickets, que ce soit sur Github, Gitlab ou tout autre outil comme JIRA par exemple, il peut être utile d’ajouter le numéro de ceux-ci dans le nom de vos branches. Il est ainsi possible par exemple de fermer automatiquement vos tickets lorsque la branche sera “merger”.

Quelques exemples

Voyons quelques exemples de noms de branches pour mieux comprendre :

feature/add-users-controller
hotfix/profile-page-error/621
experiment/try-api-key
chore/remove-deprecated-method/924

Nommer les messages de commits

Le message d’un commit doit être clair et concis, il doit indiquer ce qui a été modifié et la raison de cette modification. La convention de nommage la plus utilisée est la “Conventional Commits“. L’avantage de respecter cette convention, outre le fait de rendre plus compréhensibles vos commits, est de permettre de respecter la sémantique de versions (SemVer) et d’automatiser certaines tâches (comme la génération d’un fichier Changelog par exemple).

Format des messages

Le format du message est le suivant :

<type>(<scope>): <subject>
<body>
<BLANK LINE>
<footer>

Voyons plus en détail chacune des parties du message.

Le type

Le type du commit décrit l’origine du changement. Il peut prendre différentes valeurs : | Commit type | Desciption | Emoji | |:—————————|:———————————————-|:——| | feat | Ajout d’une nouvelle fonctionnalité | ✨ | | fix | Correction d’un bug | 🐛 | | build | Changement lié au système de build ou qui concerne les dépendances | 🚧 | | deploy | Deploy project | 🚀 | | ci | Changement concernant le système d’intégration et de déploiement continu | 👷 | | docs | Ajout ou modification de documentation | 📚 | | perf | Amélioration des performances | 🐎 | | refactor | Modification n’ajoutant pas de fonctionnalités ni de correction de bug | 🔨 | | style | Changement lié au style du code | 🎨 | | test | Ajout ou modification de tests | 🚨 | | revert | Annulation d’un précédent commit | ⏪ | | chore | Toute autre modification | 🚨 | | security | Fix security issue | 🔒 | []

Pour chacun des types, vous pouvez également utiliser un système d’emoji comme gitmoji.

Le scope

Cet élément facultatif indique simplement le contexte du commit. Il s’agit des composants de notre projet, voici une liste non exhaustive :

  • controller
  • route
  • middleware
  • view
  • config
  • service
  • etc.

Le sujet

Le sujet décrit succinctement la modification. Certaines règles doivent être respectées :

  • Le sujet doit faire moins de 50 caractères.
  • Les verbes doivent être à l’impératif (add, update, change, remove, etc.).
  • La première lettre ne doit pas être en majuscule.
  • Le sujet ne doit pas se terminer par un point.

Le corps du message

Le corps du message, qui est optionnel, doit contenir les raisons de la modification ou tout simplement donner plus détails sur le commit. Il peut également indiquer les changements importants (breaking changes). Celui-ci doit faire moins de 100 caractères.

Le footer est également facultatif, celui-ci est surtout utilisé pour faire référence aux tickets (issue) de Github ou Gitlab par exemple que le commit règle ou aux changements importants (breaking changes). Celui-ci doit faire moins de 100 caractères.

Quelques exemples

refactor(repository): remove deprecated method
 
BREAKING CHANGE: findById and findByPrimary methods have been removed.
 
Closes #78
fix(controller): use the correct HTTP code
 
Use the HTTP error 403 instead of 401 if the user is authenticated.