在semver中增加补丁号的规则

时间:2014-02-07 05:11:41

标签: api versioning semantic-versioning

根据semver

  

“PATCH版本,当您进行向后兼容的错误修复时。”

  

“错误修复被定义为修复错误行为的内部更改。”

考虑到这一点,我可以说我有一个可以调用的变量,就像一个颜色。由于某种原因,我需要更改颜色值。

v1.0.0
$color: #FFF;

v1.0.1
$color: #F0F0F0;

现在这是一个在API中定义为用户可以调用的变量。我没有更改被调用的实际变量,只更改了它返回的值。为此,我必须在API元素上更改我的代码,并且必须将此代码合并到生产分支中。但这样的事情是否真的有必要增加API的补丁版本号?

1 个答案:

答案 0 :(得分:2)

语义版本控制的目的是管理软件系统的依赖关系。语义版本控制提供了一个有组织的规范来标准化该过程,以便可靠地跟踪这些系统的状态。正如规范所述,

  

一旦发布版本化软件包,就不得修改该版本的内容。任何修改必须作为新版本发布。

如果您的更改影响了api(输入或输出)的行为并要求发布,那么该版本应该与适当的版本号挂钩。这将使包的用户可以放心地依赖您的包。每个版本都将按预期运行;应该没有歧义。


例如,假设您进行更改并将其释放但不增加修补程序编号。您可能有两个用户认为他们使用相同的代码但在调用$color api时取决于他们何时获得v1.0.0而获得不同的值。

值得注意的是,根据您发布包的方式,有多种方法可以让用户接受此更改。我可以想到两种可能的情况:

  • 如果软件包源是公开的,在软件包的早期开发中,可以将快速更改推送到开发分支,用户可以自行承担风险,从而获得更改。
  • 或者,如果包不是开源的,可以通过在版本中附加标识符来进行预发布(参见规范中的第9项和第10项)。

这些只是几个选项。根据您的具体情况,可能还有其他人。

TL; DR回答

最重要的是,v1.0.0一旦发布,v1.0.0应该始终采用相同的方式行事。无论这些变化多么微不足道,它们仍然会发生变化。这适用于所有版本X.Y.Z

相关问题