语义化版本号

定义

Ambot Package 遵从标准的语义化版本号规范,即版本号应当是 版本号格式:主版本号.功能版本号.小版本号[-先行版本号]+修订号 的格式(注意前置 v 的符号是 tag 的要求,而不是版本号的要求)。

根据语义化版本号的规范,版本号必须为 vX.Y.Z 的形式,然而因历史原因,PRS 产品使用过诸如 v1.2v1.2.3.4 等非标准的三位样式,ambot package 做了一定的兼容。这个兼容未来会被删除,请新的 package 停止使用。

版本号比较

  • 非同一产品,无法比较
  • 主版本号大的,版本较高
  • 功能版本号大的,版本较高
  • 小版本号大的,版本较高
  • 先行版本号
    • 无先行版本号的,版本较高
      • 均无先行版本号的【属于 bug】,发布日期较晚版本较高
        • 发布日期同一天的,修订号高的版本较高
          • 修订号相同的,同样高【属于 bug】
    • 先行版本号比较
      • 先行版本号相同的,发布日期较晚版本较高
        • 发布日期同一天的,修订号高的版本较高
          • 修订号相同的,同样高

约束

目前版本约束不适用于先行版本号

Ambot Package 的 Semver 约束支持如下语法

基本比较

  • =: equal (aliased to no operator)
  • !=: not equal
    • 无通配符情况下执行全文匹配
    • 有通配符情况
      • 如果约束为 pre-release,版本为 release,返回 true
      • 如果约束为 release,版本为 pre-release,返回不可用
      • 通配符前的部分不能相等
  • >: greater than
  • <: less than
  • >=: greater than or equal to
  • <=: less than or equal to

范围比较

  • 1.2 - 1.4.5 which is equivalent to >= 1.2, <= 1.4.5
  • 2.3.4 - 4.5 which is equivalent to >= 2.3.4 <= 4.5

通配符

  • 1.2.x is equivalent to >= 1.2.0 < 1.3.0
  • >= 1.2.x is equivalent to >= 1.2.0
  • <= 2.x is equivalent to <= 3
  • * is equivalent to >= 0.0.0

版本约束

  • ~1.2.3 is equivalent to >= 1.2.3 < 1.3.0
  • ~1 is equivalent to >= 1, < 2
  • ~2.3 is equivalent to >= 2.3 < 2.4
  • ~1.2.x is equivalent to >= 1.2.0 < 1.3.0
  • ~1.x is equivalent to >= 1 < 2

主版本约束

  • ^1.2.3 is equivalent to >= 1.2.3, < 2.0.0
  • ^1.2.x is equivalent to >= 1.2.0, < 2.0.0
  • ^2.3 is equivalent to >= 2.3, < 3
  • ^2.x is equivalent to >= 2.0.0, < 3
  • ^0.2.3 is equivalent to >=0.2.3 <0.3.0
  • ^0.2 is equivalent to >=0.2.0 <0.3.0
  • ^0.0.3 is equivalent to >=0.0.3 <0.0.4
  • ^0.0 is equivalent to >=0.0.0 <0.1.0
  • ^0 is equivalent to >=0.0.0 <1.0.0