AVERTISSEMENT: je suis l'auteur de gitchangelog dont je parlerai dans la suite.
TL; DR: Vous voudrez peut-être vérifier le propre changelog de gitchangelog ou la sortie ascii qui a généré le précédent.
Si vous souhaitez générer un journal des modifications à partir de votre historique git, vous devrez probablement considérer:
- le format de sortie . (ASCII personnalisé pur, type de changelog Debian, Markdow, ReST ...)
- certains filtrage de validation (vous ne voulez probablement pas voir toutes les modifications de typo ou cosmétiques dans votre journal des modifications)
- certains commettent des disputes de texte avant d'être inclus dans le changelog. (Assurer la normalisation des messages comme ayant une première lettre en majuscule ou un point final, mais cela pourrait aussi supprimer un balisage spécial dans le résumé)
- votre historique git est-il compatible ?. La fusion, le balisage n'est pas toujours aussi facilement pris en charge par la plupart des outils. Cela dépend de la façon dont vous gérez votre historique.
En option, vous voudrez peut-être une catégorisation (nouvelles choses, modifications, corrections de bugs) ...
Avec tout cela à l'esprit, j'ai créé et utilisé gitchangelog . Il est destiné à tirer parti d'une convention de message git commit pour atteindre tous les objectifs précédents.
Avoir une convention de message de validation est obligatoire pour créer un joli journal des modifications (avec ou sans utilisation gitchangelog
).
validation de la convention de message
Voici des suggestions sur ce qui pourrait être utile de penser à ajouter dans vos messages de validation.
Vous voudrez peut-être séparer grossièrement vos commits en grandes sections:
- par intention (par exemple: nouveau, corriger, changer ...)
- par objet (par exemple: doc, packaging, code ...)
- par public (par exemple: dev, testeur, utilisateurs ...)
De plus, vous pouvez vouloir marquer certains commits:
- comme des commits "mineurs" qui ne devraient pas être affichés dans votre journal des modifications (modifications cosmétiques, petite faute de frappe dans les commentaires ...)
- comme "refactor" si vous n'avez pas vraiment de changements de fonctionnalités significatifs. Ainsi, cela ne devrait pas également faire partie du journal des modifications affiché pour l'utilisateur final, par exemple, mais pourrait être intéressant si vous avez un journal des modifications pour les développeurs.
- vous pouvez également marquer avec "api" pour marquer les changements d'API ou de nouveaux trucs d'API ...
- ...etc...
Essayez d'écrire votre message de validation en ciblant les utilisateurs (fonctionnalité) aussi souvent que possible.
exemple
C'est standard git log --oneline
pour montrer comment ces informations pourraient être stockées:
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
Donc, si vous l'avez remarqué, le format que j'ai choisi est:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Pour voir un résultat de sortie réel, vous pouvez regarder la fin de la page PyPI de gitchangelog
Pour voir une documentation complète de ma convention de message de validation, vous pouvez voir le fichier de référence gitchangelog.rc.reference
Comment générer un changelog exquis à partir de cela
Ensuite, il est assez facile de créer un journal des modifications complet. Vous pouvez faire votre propre script assez rapidement, ou utiliser gitchangelog
.
gitchangelog
générera un journal des modifications complet (avec un support de sectionnement comme New
, Fix
...), et est raisonnablement configurable selon vos propres conventions de validation. Il prend en charge tout type de sortie grâce à Templating à travers Mustache
, Mako templating
et dispose d' un moteur hérité par défaut écrit en python brut; tous les 3 moteurs actuels ont des exemples de la façon de les utiliser et peuvent générer des journaux de modifications comme celui affiché sur la page PyPI de gitchangelog.
Je suis sûr que vous savez qu'il ya beaucoup d'autres git log
à changelog
outils là - bas aussi.
--graph
, qui vous montre visuellement les branches sur lesquelles les validations sont activées.