首页 > 解决方案 > GitHub 上的 SemVer 和 0.xy 版本

问题描述

如果版本 1.0.0 是每个 SemVer2 的第一个公共 API 版本,为什么某些 GitHub 存储库具有 0.xy 版本?在您想要向公众发布的第一个完整的工作代码之前进行 0.xy 开发(即 1.0 之前的任何东西都不会不可用)吗?我特别指的是想要声称他们遵循语义版本控制的存储库。

思考:0.xy 阶段的版本是否可用代码还没有 API 文档?是这个意思吗?

例如,Tensorflow 从 0.5.0 开始在 GitHub 上发布。这是每个语义版本可以接受的,还是他们根本不遵循 semver 并使用其他东西?

标签: githubreleasesemantic-versioning

解决方案


从规范:

4.主要版本零 (0.yz) 用于初始开发。任何事情都可能随时改变。公共 API 不应该被认为是稳定的。

如果版本 1.0.0 是每个 SemVer2 的第一个公共 API 版本,为什么某些 GitHub 存储库具有 0.xy 版本?

因为维护者不希望给人的印象是他们的代码/API 是稳定的或可以投入生产的。他们保留出于他们认为适当的任何原因在不发出警告的情况下删除或修改其任何 API 的权利。

思考:0.xy 阶段的版本是否可用代码还没有 API 文档?是这个意思吗?

这正是规范所说的意思。如果这还不够清楚,那么您必须询问这些 repo 的每个维护者,他们认为这意味着什么。一般来说,您应该始终将预发布版本视为危险、不可靠且可能随时更改,恕不另行通知。请勿在部署前未经彻底测试将任何预发布版本部署到生产环境中。

例如,Tensorflow 从 0.5.0 开始在 GitHub 上发布。这是每个语义版本可以接受的,还是他们根本不遵循 semver 并使用其他东西?

您应该询问他们是否关注 SemVer。任何随机版本三元组都可能具有 SemVer 字符串的外观,但这并不意味着发布者遵守 SemVer。如果他们说他们是 SemVer 并且第一个公开可用的版本是0.5.0,那是完全可以接受的。通常的做法是从0.1.0第一个功能的预发布开始,但没有规定要求这样做。也没有要求将较旧的、可能不太稳定的版本保留在公众视野中。也不需要版本历史的连续性。任何随机版本都可能因发布者认为有足够理由删除它们的任何原因而从公众视野中删除。


当发布者发布他们的第一个主要版本时,他们会说“这是一个我们不会破坏的 API”。SemVer 规范允许他们修复代码和文档中带有补丁级别版本颠簸的错误,并添加具有次要级别版本颠簸的非破坏性功能。规范没有说明这些颠簸应该有多大。


推荐阅读