伪版本号

  伪版本号是一种预发布版本号的格式,其中包含了指定的 commit hash 值。另外,对于没有打标签的代码库,也可以使用伪版本号来表明某个版本,它可以在正式发布某个版本之前方便的进行测试。举个例子,每个伪版本号都有三部分组成:

  基本版本前缀(vX.0.0 或 vX.Y.Z-0),它要么源自修订版之前的语义版本标签,要么源自 vX.0.0(如果没有此类标签)。

  时间戳 (yyyymmddhhmmss),这是创建 commit 的 UTC 时间。 在 Git 中,这是 commit 提交时间。

  commit 标识符 (abcdefabcdef),它是提交 commit 哈希的 12 个字符的前缀,或者在 Subversion 中,是一个用零填充的修订号。

  在这三个部分之下,又分为以下多种情况

  如果之前没有基版本,那么诸如 vX.0.0-yyyymmddhhmmss-abcdefabcdef 这样的伪版本号将被启用。主版本号 X 需要匹配模块的主版本号后缀。

  如果之前的基版本号是一个像 vX.Y.Z-pre 这样的预发布版本,那么 vX.Y.Z-pre.0.yyyymmddhhmmss-abcdefabcdef 将被采用。郑州看心理医生多少钱http://www.hyde8025.com/

  如果之前的基版本号是一个像 vX.Y.Z 这样的正式版本,那么 vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdefabcdef 将被采用,举个例子,如果基版本号是 v1.2.3,伪版本号可能是 v1.2.4-0.20191109021931-daa7c04131f5。

  基于不同的基础版本号,多个伪版本号是有可能指向同一个 commit hash 的,在对一个低于已经存在的伪版本号打标签时,这种情况就会发生。

  上面介绍的这种伪版本号携带了两个非常有用的信息:

  1. 伪版本号会高于这些已经存在的基础版本号,但是会低于后面生成的其他伪版本号。

  2. 有相同基础版本前缀的伪版本按时间顺序排序。

  伪版本号不需要手动指定。很多 Go 命令可以接受一个 commit hash 或者分支名,然后自动将其转化为一个伪版本号(或者一个标签,如果存在的话)。例如:

  go get -d example.com/mod@master

  go list -m -json example.com/mod@abcd1234

posted @ 2021-12-16 14:01  顾延笙  阅读(58)  评论(0编辑  收藏  举报