Lors de la contribution aux projets de Khaganat1), il est important de générer des “changelogs” de bonne qualité.
Pour cela, quelques règles sont à respecter. En particulier, nos changelogs sont automatisés, créés via les commits ; cela demande d'utiliser une syntaxe particulière.
Définir ce qu'est un changelog, un commit, renvoyer aux liens idoines, pour les plus débutantes.
Extrait de https://port.numenaute.org/khaganat/mmorpg_khanat/khanat_gamedev_guide et amendé.
Les messages de commit se rédigent en anglais de façon à faciliter la collaboration internationale.
La structure est la suivante :
<type>(portée, facultative): sujet <ligne vide> (si élément suivant présent) Corps de description plus complète (un ou plusieurs paragraphes), facultatif <ligne vide> (si élément suivant présent) <pied de page>, facultatif
Voir les exemples plus bas.
Les types de commits possibles sont les suivants (par ordre alphabétique):
Le cas échéant, il est possible d’ajouter de nouveaux types selon les besoins (se référer à la convention Angular ou Keep a Changelog par exemple). Il faut alors penser à modifier les scripts de génération de changelog en conséquence (ainsi que les conséquences sur les séquences de versionnement), et documenter ces nouveaux types ici.
Le type doit être écrit en minuscule, sans espace.
Indiquée entre parenthèses, en minuscule sans espace, elle permet de préciser éventuellement sur quel partie du code la modification porte. Elle peut être choisie dans cette liste :
Certaines portées sont spécifiques à certains logiciels :
D’autres portées peuvent être ajoutées à la liste au fur et à mesure des besoins.
Si le commit entraîne une rupture de compatibilité dans le code, le type doit se voir accoler un point d’exclamation avant les deux points, quel que soit son type (entraîne un changement de type majeur dans le versionnement). Il faut alors également lui ajouter un pied de page avec la mention « BREAKING CHANGE: » suivi de la mention de l’endroit où la rupture s’opère.
Laissant une espace après les deux points, il ne comporte pas de majuscule au début ni de point à la fin. Le sujet doit décrire en peu de mot le changement qu’opère le nouveau code.
Exemples de première ligne correcte :
feat(ui)!: change methods for IG windows, close #18 fix(core): address collision problems for player, close #37 feat: add color wheel for windows background, close #16
Facultatif, il permet de décrire de façon détaillée ce qui a motivé les choix opérés et mettre l’emphase sur les améliorations espérées par rapport à l’ancien état.
Il peut comporter deux éléments :