语义化版本原则


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/04/12/%E8%AF%AD%E4%B9%89%E5%8C%96%E7%89%88%E6%9C%AC%E5%8E%9F%E5%88%99/

摘要

本文主要讲述了:

  1. 语法
  2. 优先级

正文

语法

版本号遵循<major-version>.<minor-version>.<patch-version>的格式

  • major-version、minor-version、patch-version 必须为非负的整数。
  • 版本号的数字只能递增。

示例:

1.0.0表示 major-version 是1,minor-version 是0,patch-version 是0

major-version

  • major-version 为 0 的软件表示正处在不稳定的内部开发阶段
  • 1.0.0表示第一个正式的公共版本
  • 新增不向后兼容的功能时更新 major-version
  • 每次当 major-version 递增时,minor-version 和 patch-version 必须归零
  • major-version 禁止前缀 0。例如:01.0.0是不合法的

示例:

2.0.0不向后兼容1.0.0

这表示此前使用1.0.0版本软件的开发者,如果现在想将软件的版本升级到2.0.0,则必须修改方法的调用方式。

minor-version

  • 新增向后兼容的新功能时更新 minor-version
  • 旧功能被标记为弃用时更新 minor-version
  • 每次当 minor-version 递增时,patch-version 必须归零
  • minor-version 禁止前缀 0。例如:1.01.0是不合法的

示例:

1.1.01.0.0的基础上增加了新特性,且向后兼容1.0.0

这表示此前使用1.0.0版本软件的开发者,如果现在想将软件的版本升级到1.1.0,无需修改任何逻辑。

patch-version

  • 修复向后兼容的 bug 时更新 patch-version
  • patch-version 禁止前缀 0。例如:1.0.01是不合法的

示例:

1.0.11.0.0的基础上修复了 bug,且向后兼容1.0.0

这表示此前使用1.0.0版本软件的开发者,如果现在想将软件的版本升级到1.0.1,无需修改任何逻辑。

pre-release-version

  • pre-release-version 通常被认为是不稳定的,其优先级低于对应的标准版
  • pre-release-version 跟在 patch-version 之后。先写-,后面的间隔用.
  • 数字的 pre-release-version 禁止前缀 0。例如:1.0.0-001是不合法的

示例:

1.0.0-alpha1.0.0-0.9

build-metadata

  • build-metadata 跟在 patch-version 或 pre-release-version 之后。先写+,后面的间隔用.

示例:

1.0.0+2019.03.271.0.0-alpha+2019.03.27

优先级

major-version 大的优先级大

示例:

1
1.0.0 < 2.0.0

如果 major-version 相同,minor-version 大的版本优先级大

示例:

1
1.0.0 < 1.1.0

如果 major-version、minor-version 相同,patch-version 大的版本优先级大

示例:

1
1.0.0 < 1.0.1

如果 major-version、minor-version、patch-version 相同,没有 pre-release-version 的版本优先级大

示例:

1
1.0.0-alpha < 1.0.0

如果 major-version、minor-version、patch-version 都相同,比较 pre-release-version 时需要从左到右逐位比较

相同位为数字的时候,数值大的版本优先级大

示例:

1
2
1.0.0-1.0 < 1.0.0-1.1
1.0.0-1.0.0 < 1.0.0-1.0.1

相同位为字母或连字符的时候,ASCII 排序大的版本优先级大

示例:

1
2
1.0.0-a < 1.0.0-b
1.0.0-a.b < 1.0.0-a.c

字母的优先级比数字大

示例:

1
1.0.0-a.1 < 1.0.0-a.a

pre-release-version 开头都相同时,长度长的版本优先级大

示例:

1
2
1.0.0-1 < 1.0.0-1.0
1.0.0-a < 1.0.0-ab

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/04/12/%E8%AF%AD%E4%B9%89%E5%8C%96%E7%89%88%E6%9C%AC%E5%8E%9F%E5%88%99/


本文对你有帮助?请支持我


支付宝
微信