Semantic Versioning 语义化版本号

最近在学习NodeJs,今天在看commonJSpackage部分的时候,在讲到version字段的时候,建议参考Semantic Versioning作为版本号的编写标准。仔细了解了下,对版本号的写法有了一些认识,挑选其中重要的部分记录下。语义化版本控制的规范是由Gravatars创办者兼GitHub共同创办者Tom Preston-Werner所建立。

版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  1. 主版本号:当你做了不兼容的API 修改,
  2. 次版本号:当你做了向下兼容的功能性新增,
  3. 修订号:当你做了向下兼容的问题修正。

先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

语义化版本号说明(SemVer)

  • 使用语义化版本号的软件必须声明一个公共API。这个API可以在代码内部声明或者严格地写入文档中。不论如何,这个API必须是准确切让人用以理解的。
  • 一个标准的版本号必须是X.Y.Z的形式,其中X,Y,Z都不能为负数。X是主版本,Y是副版本,Z是补丁版本。每个元素必须一次只能增加1.比如:1.9.0 -> 1.10.0 -> 1.110
  • 当一个主版本增加了,副版本和补丁版本必须被重置为0.当一个副版本增加,那么补丁版本必须被重置为0.比如:1.1.3 -> 2.00 和 2.1.7 -> 2.2.0
  • 一旦一个版本包被发布,那么这个版本的内容不能被更改。任何修改都必须重新发布一个版本。
  • 主版本0(0.y.z)用于初始开发。在该阶段,任何时刻都可能发生改变。这个时候的公共API被认为是不稳固的。
  • 在版本号1.0.0中定义公共API。接下版本号的改变都依赖于这个公共API的改变。
  • 补丁版本号Z(x.y.Z | x > 0)必须只有在修复向下兼容的Bug时才会更新。Bug修复是指通过代码内部的修改来修正不正确的行为。
  • 当向下兼容的功能被提出或者任何公共API被废弃的时候,副版本号Y(x.Y.z | x > 0 )必须被更新。当大量的新功能或者改进出现在私有代码里面,副版本号也可以更新。副版本号的更新可能包括补丁版本的更新内容。副版本号更新后,补丁版本号必须重置为0
  • 当公共API出现了与向下兼容性有关的变更时,主版本号X(X.y.z | X > 0)必须被更新。它可能包含了副版本和补丁版本的变更内容。主版本更新后,副版本和补丁版本必须被重置为0
  • 一个预发布的版本号可能使用在补丁版本号后面添加一个破折号和一系列的被点分割的标示符构成。这些标示符必须由ASCII码中的包含文字和数字的符号以及破折号组成[0-9A-Za-z-]。预发布版本的优先级比正常的版本号低。比如:1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92
  • 一个生成版本可能使用在补丁版本和预发布版本后面添加一个加号和一系列由破折号分隔的标示符组成。这些标示符必须由ASCII码中的包含文字和数字的符号以及破折号组成[0-9A-Za-z-]。生成版本的优先级比正常版本的优先级高
  • 优 先级必须通过将版本号根据主版本号,副版本号,补丁版本号,预发布版本号,生成版本号的顺序分割后进行计算。主版本,副版本,补丁版本总是通过数字大小进 行比较。预发布版本和生成版本之间的比较必须通过被破折号分隔的标示符进行比较:只带有数字的版本号通过数字大小进行比较,带有字母的版本号则更具字符在 ASCII表中的顺序比较优先级。数字标示符总是比非数字的标示符优先级低。比如:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0-rc.1+build.1 < 1.0.0 < 1.0.0+0.3.7 < 1.3.7+build < 1.3.7+build.2.b8f12d7 < 1.3.7+build.11.e0f985a.

 
原文链接:http://semver.org/lang/zh-CN/
常见版本字符:http://user.qzone.qq.com/614422099/blog/1416571298

Comments are closed.