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
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.