语义版本控制在啥版本下进行版本化?
Posted
技术标签:
【中文标题】语义版本控制在啥版本下进行版本化?【英文标题】:Under what version is semantic versioning versioned?语义版本控制在什么版本下进行版本化? 【发布时间】:2017-11-04 11:01:17 【问题描述】:Semantic versioning 存在于两个草稿中(截至撰写本文时,不包括 beta 版和候选发布版):1.0.0 和 2.0.0。显然,它是自行版本化的。
1.0.0 和 2.0.0 之间的哪些重大变化导致了主要版本的升级? 在使用 semver 时,我是否需要担心这次或未来的更改会导致混乱? 如果 semver 进行了一个版本允许但其他版本不允许的更改,会发生什么情况?【问题讨论】:
【参考方案1】:这些都是很好的问题!
1.0.0 和 2.0.0 之间的哪些重大变化导致了主要版本的升级?
有多项更改涉及对规范中语言的细微收紧以及对常见问题解答的添加,这可能会导致一些 SemVer 解析器(打包和工作流工具)中的一些代码更改,但都不是惊天动地的。最大的变化是:
添加了#11 指定版本优先级,包括预发布标签和不包括构建元数据。 添加了build metadata tag,这几乎可以保证大多数支持产品(如果不是全部)的解析器损坏。 从版本字符串中删除“v”。 对节号的更改使得 1.0.0 #10 与 2.0.0 #10 无关,这肯定会破坏默认 semver.org 页面的参考链接。在使用 semver 时,我是否需要担心这次或未来的更改会造成混乱?
没有标准的方法可以真正了解 MyCoolGizmo 1.2.0 是否根据 SemVer 1.0.0、2.x.x 或未来的 x.x.x 规范进行版本控制。但是,您无法从版本字符串中分辨出任何关于任何潜在语义、合同或工作流的信息,我们需要某种版本元/模式 (WIP)。在GitHub semver/semver issues tab 上有一些建议,如果被采纳,SemVer 社区中的许多人会非常不安,但不太可能全部或部分采纳。
我已经与维护者就 SemVer 的未来进行了一些电子邮件讨论,并且有理由期待一些计划正在进行中,以便在今年某个时候将一些前瞻性声明记录在案。版本 3.x.x 可能就在拐角处,但此时那个拐角可能需要数年时间。该标准非常稳定,我相信它很可能会保持稳定。
编辑:谈到您问题的核心,semver.org site 维护了可以从您的产品文档中引用的规范的五个版本的“不可变”副本。我希望随着新的候选版本/版本的发布,这个列表会增加。您应该始终能够引用您的产品声称遵守的版本。
如果 semver 进行了一个版本允许但其他版本不允许的更改,会发生什么情况?
任何新版本的 SemVer 都将相对于 2.0.0。当然,任何相对于 2.x.x 的重大变化都是相对于 1.0.0 的重大变化,那么有什么区别呢?如果您担心功能被删除,这显然是一个重大更改,需要另一个主要版本升级。
如果您还有任何疑问,可以在这里询问他们或通过SemVer issues site on GitHub 提出。
【讨论】:
以上是关于语义版本控制在啥版本下进行版本化?的主要内容,如果未能解决你的问题,请参考以下文章