2-git-1-语义化版本

版本格式

  • 0.y.z 表示开发阶段,一切可能随时改变,非稳定版。
  • 1.0.0 界定此版本为初始稳定版,后面的一切更新都基于此版本进行修改。

版本格式:主版本号.次版本号.修订号
版本示例:1.2.3

版本号递增规则

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

先行版本号和开发版本号

先行版本号(Pre-release):意味该版本不稳定,可能存在兼容性问题。

格式为: X.Y.Z.[a-c][正整数],如 1.0.0.a1,1.0.0.b99,1.0.0.c1000。

开发版本号:常用于 CI-CD(持续集成和持续交付)

格式为: X.Y.Z-dev[正整数],如 1.0.1-dev4

版本名称

常见

描述方式 说明 含义
αa alpha 版 内测版本,内部测试的版本,bug 较多
βb beta 版 公测版本,给外部进行测试的版本,有缺陷
γg Gamma 版 相当成熟的测试版,于发行版相差无几
rc Release Candidate 是前面三种测试版的进一步版本,实现了全部功能,清除了大部分 bug,接近发布倒计时,有时会进一步细分为 rc1,rc2

其他

描述方式 说明 含义
Demo 演示版 只集成了正式版部分功能,无法升级
SP SP1 是 service pack 的意思表示升级包
Trial 试用版 试用版
Unregistered 未注册 有功能或时间限制的版本
Lite 精简版 只含有正式版核心功能
enhance 增强版 属于正式版1
free 免费版 自由使用版本
release 发行版 有时间限制
upgrade 升级版 有功能增强或修复 bug
Retail 零售版 单独发售
Cardware 共享版 公用许可证

版本限定

在进行包管理时,为了保证安装依赖的兼容性.

{
  "devDependencies": {
    "karma": "0.13.22"
  }
}

表示安装 0.13.22 版本的 karma.

范围描述

  • < 小于某一版本号
  • <= 小于等于某一版本号
  • > 大于某一版本号
  • >= 大于等于某一版本号
  • = 等于某一版本号,没有意义和直接写该版本号一样
  • ~ 基于版本号描述的最新补丁版本
  • ^ 基于版本号描述的最新兼容版本
  • - 某个范围

严格来讲对 ~,^ 的表述需要结合具体的包管理工具和版本号规则来确定.但是对于一般使用记住如下原则.
^ 是确保版本兼容性时,默认对次版本号的限定约束
~ 是确保版本兼容性时,默认对补丁号的约束

利用 ^,~ 的意义在于确保工具包对依赖版本的兼容性,排除主版本更迭,
造成依赖失效的可能.

版本描述

  • * 通配符
  • x,X 约等于 * 号,通常用于次版本和补丁的通配.

0.x 警惕这种版本,说明该依赖还未稳定(如果它遵守语义化命名的话),此外由于 0.x 版本随时可能改变,此时 ^,~ 的都表示为对补丁版的限制.

< 1.2.3     小于1.2.3 的版本均可 
= 1.2.3     只支持等于1.2.3 的版本 
<= 1.2.3    只支持小于等于1.2.3 的版本
> 1.2.3     只支持大于 1.2.3 的版本
>= 1.2.3    只支持大于等于 1.2.3 的版本
1.2.3-2     支持 >=1.2.3 <3.0.0 的版本
1.x.1       支持 >=1.0.1 <1.1.0 的版本
*           支持 >= 0.0.0 的版本
""          同 *
1           表示 >=1.0.0 <2.0.0 其余任意位置为空相似
1.0         >= 1.0.0 < 1.1.0
~1.1.1      >=1.1.1 <1.2.0
~1.1        >=1.1.0 <1.2.0
~1          >=1.0.0 <2.0.0
^1.1.1      >=1.1.1 <2.0.0
^0.1.1      >=0.1.1 <0.2.0 注意这里,不要以为是 0.1.1-1.0.0 之间
^0.0.1      >=0.0.1 <0.0.2 同上,请注意

主要版本

  • 指定版本:比如 1.2.2 ,遵循“大版本.次要版本.小版本”的格式规定,安装时只安装指定版本。
  • 波浪号(tilde)+指定版本:比如 ~1.2.2 ,表示安装 1.2.x 的最新版本(不低于1.2.2),但是不安装 1.3.x,也就是说安装时不改变大版本号和次要版本号。
  • 插入号(caret)+指定版本:比如 ˆ1.2.2,表示安装 1.x.x 的最新版本(不低于 1.2.2),但是不安装 2.x.x,也就是说安装时不改变大版本号。需要注意的是,如果大版本号为 0,则插入号的行为与波浪号相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。
  • latest:安装最新版本。

文档

https://semver.org/lang/zh-CN/

https://getcomposer.org/doc/articles/versions.md