语义版本控制:在我的模块的所有版本中发现错误在哪里修复和更新版本?

semantic-versioning: found bug in all versions of my module where to fix and update version?

我正在尝试了解语义版本控制。目前我的模块有 2 个主要版本,如下所示。

1.0.0、1.1.0、1.1.1、1.1.2 .... 2.0.0、2.1.0

所以我有几个问题:

  1. 在所有版本中发现一个错误,因此需要修复所有版本中的错误并更新版本?或修复和更新版本,如 1.1.3 和 2.1.1

  2. 如果新版本有功能和错误修复,我应该增加什么?

如有疑问,应始终引用 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 指定:

Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards compatible functionality is introduced to the public API. It MUST be incremented if any public API functionality is marked as deprecated. It MAY be incremented if substantial new functionality or improvements are introduced within the private code. It MAY include patch level changes. Patch version MUST be reset to 0 when minor version is incremented.

基本上,根据您是添加了向后兼容功能还是进行了重大更改,您会遇到 Minor 或 Major。您可以在一个版本中包含所有您想要的错误修复和新功能。当您碰撞 Major 或 Minor 时,所有较低版本的字段都会重置为零。