Si el esquema clásico de versiones semánticas "MAJOR.MINOR.PATCH" tiene sentido, depende de a quién implemente, y especialmente cuándo y con qué frecuencia se implementa al usuario final . El esquema es más útil si trabaja con la versión estable "4.5", donde comienza con 4.5.0. Las versiones 4.5.1, 4.5.2, etc. contienen solo correcciones de errores, mientras que internamente ya trabaja en la versión 4.6.
Por ejemplo, si proporciona una "rama estable" a su usuario final, dele una versión 4.5.0 para la implementación inicial y 4.5.1, 4.5.2 cada vez que libere un parche. En su desarrollo interno "ágil" y la implementación de la mitad del sprint, ya puede tener una versión 4.6, simplemente llámela "versión beta". Siempre que lo implemente a mitad del sprint, agregue el número de compilación generado automáticamente como "4.6.beta build 123". Cuando finalice su sprint, asígnele "4.6.0" y cambie internamente el número de versión para el siguiente sprint a "4.7". Comenzar con ".0" es solo una convención, también puede usar ".0" para etiquetar versiones beta y comenzar con ".1" para sus usuarios finales. En mi humilde opinión, la palabra "beta" es mucho más expresiva, diciendo a todos que el sprint "aún no se ha completado".
Si publica un registro de cambios completo del usuario final con cada versión beta, depende de usted, pero al menos al final del sprint, el registro de cambios debe completarse, y cada vez que proporcione una corrección de errores al usuario final, también debe actualizar Los documentos de la historia.
Encontrará la estrategia de liberar dos ramas separadas, una rama "estable" con números de versión semántica y una "rama de desarrollo" marcada con números de compilación o algo similar, en muchos productos de código abierto como Inkscape, Firefox o 7-zip.
Sin embargo, si no trabaja con ramas estables y de desarrollo separadas, y lanza una nueva versión para su usuario final diariamente, también debe aumentar un número de versión diariamente. Para tal caso, los números de versión "4.5.1", "4.5.2", ... probablemente reflejarán sus implementaciones individuales, y no indican la diferencia entre las correcciones de errores y otros cambios. Eso puede estar bien, ya no es una clásica "versión semántica". En este escenario, también podría implementar las versiones 4.5, 4.6, 4.7, 4.8, que no ofrecen una diferencia real.
En cuanto a su pregunta sobre las entradas en su registro de cambios: en mi humilde opinión, cuando el usuario final puede ver algo, vale la pena ingresarlo en el registro de cambios, tan pronto como implemente el cambio. Por ejemplo, si usa la función alterna y realiza cambios en alguna función a medio cocer que aún no está activada para el usuario, eso no pertenece a un registro de cambios. Si solo refactoriza, sin cambios visibles para el usuario, eso no pertenece a un registro de cambios. Si corrige un error que podría haber afectado a algunos usuarios, eso definitivamente pertenece al registro de cambios, y debe mencionarse allí al mismo tiempo cuando implementa la corrección de errores. Y no importa si publicas diariamente, mensualmente o anualmente.