前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊golang的Pseudo-versions

聊聊golang的Pseudo-versions

作者头像
code4it
发布2022-06-08 13:53:42
4610
发布2022-06-08 13:53:42
举报
文章被收录于专栏:码匠的流水账码匠的流水账

本文主要研究一下golang的Pseudo-versions

Pseudo-versions

定义

Pseudo-versions,中文大概是伪版本的意思,就是没有打语义版本tag(semantic version tags)的会使用伪版本

格式

类似v0.0.0-yyyymmddhhmmss-abcdefabcdef,中间的时间为UTC时间(东八区为utc+8),最后的12位为git commit的hash的前12位

forms

• vX.0.0-yyyymmddhhmmss-abcdefabcdef

如果之前都没有major的语义版本tag则其Pseudo version第一部分为vX.0.0

• vX.Y.Z-pre.0.yyyymmddhhmmss-abcdefabcdef

在vX.Y.Z-pre(v3.9.0-pre)版本之后提交的commit,其Pseudo version第一部分为vX.Y.Z-pre.0(v3.9.0-pre.0)

• vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdefabcdef

在vX.Y.Z(v3.9.0)版本之后提交的commit,其Pseudo version第一部分为vX.Y.(Z+1)-0(v3.9.1-0)

+incompatible

对于有些依赖没有go.mod的,go.sum会出现+incompatible,比如

代码语言:javascript
复制
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=

问题

基于分支commit的版本在改commit被删除之后会导致go mod invalid version

比如从特性分支合并到主干的时候采用git merge --squash且同时删除特性分支的方式会造成依赖之前依赖特性分支的commit丢失,最后导致依赖这个commit的工程无法build

基于tag的版本在tag被删除的时候,也会出现go mod invalid version

其他语言诸如java的maven,由仓库管理,除非特殊情况,一般不会去仓库删除版本,一般不会有误操作。go的这点也要特别注意,在删除tag的时候要小心。

小结

go的Pseudo-versions有点类似maven的snapshot的概念,都是基于时间戳的方式,不过go的仓库是基于git仓库的,所以带上了commit的hash信息。但是要特别注意go mod invalid version的问题。

doc

• Pseudo-versions[1] • Where pseudo version with non-existent tag[2] • Why go module pseudo version have a specific version?[3] • Go Big With Pseudo-Versions and GoCenter[4]

外部链接

[1] Pseudo-versions https://golang.org/cmd/go/#hdr-Pseudo_versions

[2] Where pseudo version with non-existent tag https://stackoverflow.com/questions/58175969/where-pseudo-version-with-non-existent-tag

[3] Why go module pseudo version have a specific version? https://stackoverflow.com/questions/62810261/why-go-module-pseudo-version-have-a-specific-version

[4] Go Big With Pseudo-Versions and GoCenter https://jfrog.com/blog/go-big-with-pseudo-versions-and-gocenter/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pseudo-versions
    • 定义
      • 格式
        • forms
          • +incompatible
          • 问题
          • 小结
          • doc
            • 外部链接
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档