【发布时间】:2018-10-22 10:23:42
【问题描述】:
我正在尝试理解语义版本控制。目前我的模块有 2 个主要版本,如下所示。
1.0.0、1.1.0、1.1.1、1.1.2 …… 2.0.0, 2.1.0
所以我有几个问题:
在所有版本中都发现了一个错误,因此需要在所有版本中修复该错误并更新版本?或修复和更新 1.1.3 和 2.1.1 等版本
如果新版本具有功能和错误修复,我应该增加什么?
【问题讨论】:
我正在尝试理解语义版本控制。目前我的模块有 2 个主要版本,如下所示。
1.0.0、1.1.0、1.1.1、1.1.2 …… 2.0.0, 2.1.0
所以我有几个问题:
在所有版本中都发现了一个错误,因此需要在所有版本中修复该错误并更新版本?或修复和更新 1.1.3 和 2.1.1 等版本
如果新版本具有功能和错误修复,我应该增加什么?
【问题讨论】:
如有疑问,应始终引用the SemVer spec。
假设您在以下功能集中发现了一个错误:
1.0.x
1.1.x
1.3.x
2.0.x
2.1.x
在每种情况下,该功能级别的错误修复如下所示:
1.0.x+1
1.1.x+1
1.3.x+1
2.0.x+1
2.1.x+1
其中 x 是每个功能集的最高补丁编号。
决定您是否需要通过错误修复来支持早期版本。在某些时候,大多数团队将下级工作限制为错误修复,并且在他们仍然支持的每个主要系列中只返回两个或三个次要版本。在版本 2 系列中发布一到两个版本后停止所有版本 1 的工作并不罕见。
Semver 2.0.0 #7 指定:
如果将新的、向后兼容的功能引入公共 API,则必须增加次要版本 Y (x.Y.z | x > 0)。如果任何公共 API 功能被标记为已弃用,则必须增加它。如果在私有代码中引入了大量的新功能或改进,它可能会增加。它可能包括补丁级别更改。当次要版本增加时,补丁版本必须重置为 0。
基本上,根据您是否添加了向后兼容功能或进行了重大更改,您会影响 Minor 或 Major。您可以在一个版本中包含您想要的所有错误修复和新功能。当您更改 Major 或 Minor 时,所有较低版本的字段都会重置为零。
【讨论】: