发布后版本控制和 SemVer 2.0(语义版本控制)

Posted

技术标签:

【中文标题】发布后版本控制和 SemVer 2.0(语义版本控制)【英文标题】:Post-Release versioning and SemVer 2.0 (sematic verisoning) 【发布时间】:2018-02-03 07:07:01 【问题描述】:

这不是编码,而是过程问题。

我正在构建可能需要针对某些市场或一般市场进行发布后修复或添加功能的软件。

按照 SemVer 2.0 (http://semver.org/spec/v2.0.0-rc.2.html) 方案在指定的版本号上附加一个- 标记来标记我想在版本号上添加一个+ 标记来标记这样一个发布后的版本。

只要不发生重大更改,这将导致以下版本树:

1.0.1-rc1                               // initial pre-release
|
1.0.1-rc2                               // second pre-release
|
1.0.1                                   // actual release
|
|-------- 1.0.1+1 --- 1.0.1+2           // post release path
|
|
|
1.0.2                                   //non breaking
|
2.1.0                                   //1st breaking

有没有更好的方法让它完全符合 semver 标准?

npm、jspm 和 yarn 将如何处理这样的 semVer 扩展?

我错过了一块吗?有没有“官方”的解决方案?

【问题讨论】:

【参考方案1】:

按照 semver 规范,我的提议似乎“无效”

    可以通过在补丁或预发布版本之后附加一个加号和一系列点分隔标识符来表示构建元数据。标识符必须仅包含 ASCII 字母数字和连字符 [0-9A-Za-z-]。在确定版本优先级时应该忽略构建元数据。 因此具有相同版本但构建元数据不同的两个包被认为是相同的版本。示例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。

【讨论】:

以上是关于发布后版本控制和 SemVer 2.0(语义版本控制)的主要内容,如果未能解决你的问题,请参考以下文章

语义化版本控制规范(SemVer)

Semver (Semantic Versioning) 语义化版本号

npm学习之如何使用语义化版本

将此类版本控制命名为 semver 是不是正确?

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

semver 2.0.0 的重大变化是啥