Si le schéma de gestion de versions sémantique classique "MAJOR.MINOR.PATCH" a du sens, cela dépend de qui vous déployez, et surtout quand et à quelle fréquence vous le déployez vers l'utilisateur final . Le schéma est très utile si vous travaillez avec la version stable "4.5", où vous commencez par la version 4.5.0. Les versions 4.5.1, 4.5.2, etc. ne contiennent que des correctifs de bogues, tandis que vous travaillez déjà en interne sur la version 4.6.
Par exemple, si vous fournissez une "branche stable" à votre utilisateur final, donnez-lui une version 4.5.0 pour le déploiement initial et 4.5.1, 4.5.2 chaque fois que vous publiez un correctif. Dans votre développement interne "agile" et votre déploiement mid-sprint, vous pouvez déjà avoir une version 4.6, il suffit de l'appeler une "version beta". Chaque fois que vous le déployez au milieu du sprint, ajoutez le numéro de build généré automatiquement comme "4.6.beta build 123". Lorsque votre sprint se termine, affectez-lui "4.6.0" et changez le numéro de version du prochain sprint en interne sur "4.7". Commencer par ".0" n'est qu'une convention, vous pouvez également utiliser le ".0" pour baliser les versions bêta, et commencer par ".1" pour vos utilisateurs finaux. À mon humble avis, le mot «bêta» est beaucoup plus expressif, disant à tout le monde que le sprint «n'est pas encore terminé».
Si vous publiez un journal des modifications complet pour l'utilisateur final, chaque version bêta dépend de vous, mais au moins à la fin du sprint, le journal des modifications doit être terminé et chaque fois que vous fournissez un correctif de bogue à l'utilisateur final, vous devez également mettre à jour les documents d'histoire.
Vous trouverez la stratégie de libération de deux branches séparées, une branche "stable" avec des numéros de version sémantiques et une "branche de développement" marquée avec des numéros de build ou quelque chose de similaire, dans de nombreux produits open source comme Inkscape, Firefox ou 7-zip.
Cependant, si vous ne travaillez pas avec des branches stables et de développement distinctes et que vous publiez quotidiennement une nouvelle version pour vous, vous devez également incrémenter un numéro de version quotidiennement. Dans un tel cas, les numéros de version "4.5.1", "4.5.2", ... refléteront probablement vos déploiements individuels et n'indiqueront pas la différence entre les corrections de bogues et d'autres modifications. Cela peut être correct, ce n'est tout simplement plus du "versionnage sémantique" classique. Dans ce scénario, vous pouvez également déployer les versions 4.5, 4.6, 4.7, 4.8, ce qui ne fait aucune différence réelle.
Concernant votre question sur les entrées dans votre changelog: IMHO quand quelque chose est visible pour l'utilisateur final, cela vaut une entrée dans le changelog, dès que vous déployez le changement. Par exemple, si vous utilisez des bascules de fonction et apportez des modifications à une fonction semi-intégrée qui n'est pas encore activée pour l'utilisateur, qui n'appartient pas à un journal des modifications. Si vous effectuez uniquement une refactorisation, sans modification visible de l'utilisateur, cela n'appartient pas à un journal des modifications. Si vous corrigez un bogue qui aurait pu affecter certains utilisateurs, cela appartient définitivement au journal des modifications - et il devrait y être mentionné en même temps lorsque vous déployez le correctif. Et peu importe si vous publiez quotidiennement ou mensuellement ou annuellement.