J'ai été le seul contributeur sur le projet TXR, et j'ai gardé un ChangeLog détaillé assez tôt dans le projet. Cela fait près de 11 000 lignes et continue de croître:
http://www.kylheku.com/cgit/txr/tree/ChangeLog
(Les messages de validation dans le référentiel ne sont qu'une copie de ce qui se trouve dans le ChangeLog.)
[Édition 2016: depuis la mi-2015, je ne gère plus de fichier ChangeLog; cependant, les messages de validation sont écrits dans un format conforme aux conventions Git et ChangeLog en même temps. Le même niveau de détail est là, d'une manière qui ne cause pas de problèmes de fusion. Un fichier ChangeLog pourrait être reconstruit mécaniquement à partir de ces commentaires.]
Oui, plus d'une fois, je suis retourné à un ancien message de validation associé à un changement qui a cassé quelque chose (découvert avec l'aide de git bisect
). Le message m'a aidé à comprendre ce que je faisais.
Dans le ChangeLog, vous pouvez savoir quand une fonction, un type, une macro ou une variable globale a été introduite pour la première fois et quand elle a ensuite été touchée par des modifications.
Mais la principale raison d'écrire des messages de validation détaillés comme ceux-ci lorsque vous travaillez par vous-même est la suivante: vous trouvez des bogues en faisant cela .
Écrire un message de validation détaillé présente des avantages similaires à un examen du code de votre validation par quelqu'un d'autre. La valeur d'un examen de validation n'est pas tant que quelqu'un vérifie votre code, mais que vous devez expliquer vos modifications à un autre développeur.
Lorsque vous essayez d'expliquer des choses, vous trouvez parfois qu'elles n'ont pas de sens.
Une autre raison: vous pouvez vous surprendre à faire un changement inutile . En écrivant un commentaire de validation détaillé, vous capturez une vue d'ensemble de ce que vous faites, puis vous êtes parfois confronté au fait que ce n'est pas un bon changement.
J'ai parfois fait des changements, quand au milieu de l'écriture de l'entrée ChangeLog j'ai réalisé que ça allait être un git reset --hard
(jeter ces changements inutiles) plutôt que git commit -a
.