如果经典的语义版本控制方案“ MAJOR.MINOR.PATCH”有意义,则取决于您部署给谁,尤其是何时以及多长时间部署一次最终用户。如果使用稳定版本“ 4.5”(从4.5.0开始),该方案最有用。4.5.1、4.5.2等版本仅包含错误修复,而您内部已经在使用4.6版本。
例如,如果为最终用户提供“稳定分支”,则为初始部署提供4.5.0版本,并在发行补丁程序时为其提供4.5.1、4.5.2版本。在内部“敏捷”开发和中期打印部署中,您已经可以拥有4.6版,只需将其称为“测试版”即可。每当您在Sprint中期部署它时,请添加自动生成的内部版本号,例如“ 4.6.beta内部版本123”。当您的Sprint结束时,将其分配为“ 4.6.0”,然后在内部将下一个Sprint的版本号切换为“ 4.7”。以“ .0”开头只是一个惯例,您也可以使用“ .0”标记beta版本,并为最终用户以“ .1”开头。恕我直言,“ beta”一词更具表现力,告诉所有人“短跑尚未完成”。
如果您发布完整的最终用户更改日志,并且每个beta版本均由您决定,但是至少在冲刺结束时,更改日志应完成,并且每当向最终用户提供错误修正时,也应更新历史记录文件。
您会发现在许多开源产品(如Inkscape,Firefox或7-zip)中释放两个分离的分支,一个带有语义版本号的“稳定”分支和一个标记有内部版本号或类似名称的“开发分支”的策略。
但是,如果您不使用单独的稳定分支和开发分支,而是每天向最终用户发布新版本,则还应该每天增加一个版本号。在这种情况下,版本号“ 4.5.1”,“ 4.5.2”,...可能会反映您的个人部署,而不表示错误修复和其他更改之间的差异。可以,因为它不再是经典的“语义版本控制”。在这种情况下,您还可以部署版本4.5、4.6、4.7、4.8,这没有什么实质的区别。
关于您的变更日志中的条目的问题:恕我直言,当最终用户看到某些内容时,一旦部署变更,就值得在变更日志中添加一个条目。例如,如果使用功能切换并对尚未激活的某些半自动功能进行更改,则该功能不属于更改日志。如果仅进行重构,而对用户没有可见的更改,则该重构不属于更改日志。如果您修复了可能影响某些用户的错误,则该错误肯定属于变更日志-在部署错误修正的同时应在此提及。而且,每天发布,每月发布还是每年发布都没有关系。