语义版本控制在什么版本下进行版本化?

Under what version is semantic versioning versioned?

Semantic versioning 存在于两个草案中(截至撰写本文时,不包括测试版和候选发布版本):1.0.0 和 2.0.0。显然,它是自己版本化的。

这些问题很好!

What is the breaking change between 1.0.0 and 2.0.0 that prompted the major version bump?

有多项更改涉及规范中语言的微妙收紧和对常见问题解答的添加,这可能会促使某些 SemVer 解析器(打包和工作流工具)中的一些代码发生更改,none 非常实用颤抖。最大的变化是:

  • 添加 #11 指定版本优先级,包括预发布标记并排除构建元数据。
  • 添加 build metadata tag,这实际上保证了大多数(如果不是全部)支持产品中的解析器损坏。
  • 从版本字符串中删除 'v'。
  • 更改节号,使 1.0.0 #10 与 2.0.0 #10 无关,这肯定会将参考链接断开到默认 semver.org 页面。

Do I need to be worried when using semver that this or future changes will cause confusion?

没有标准的方法可以真正知道 MyCoolGizmo 1.2.0 的版本是根据 SemVer 1.0.0、2.x.x 还是未来的 x.x.x 规范。但是,您不能从版本字符串中看出任何关于任何潜在语义、契约或工作流的信息,为此我们需要某种版本 Meta/Schema (WIP)。 GitHub semver/semver issues tab 上有一些提案,如果被采纳会让我们 SemVer 社区中的许多人感到非常不安,但完全或部分采纳的可能性很小。

我已经与维护者就 SemVer 的未来进行了一些电子邮件讨论,并且有理由期待一些计划正在进行中,以便在今年某个时候记录一些前瞻性陈述。一个版本 3.x.x 可能就在某个角落,但那个角落可能在这一点上已经多年了。该标准一直非常稳定,我相信它很可能会保持这种状态。

编辑:进入问题的核心,semver.org site 维护着 "immutable" 五个版本的规范副本,可以从您的产品文档中引用这些副本。我预计该列表会随着新 release-candidates/releases 的发布而增加。您应该始终能够参考您的产品声称遵守的版本。

What would happen if semver made a change that was allowed under one version but not under others?

任何新版本的 SemVer 都与 2.0.0 相关。当然,相对于 2.x.x 的任何重大更改都是相对于 1.0.0 的重大更改,那么有什么区别呢?如果您担心功能被删除,那显然是一项重大更改,需要另一个主要版本更新。

如果您有任何进一步的疑虑,可以在这里询问他们或通过 SemVer issues site on GitHub 联系他们。