美文网首页
聊聊golang的Pseudo-versions

聊聊golang的Pseudo-versions

作者: go4it | 来源:发表于2022-05-16 00:15 被阅读0次

本文主要研究一下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,比如

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

相关文章

  • 聊聊golang的Pseudo-versions

    序 本文主要研究一下golang的Pseudo-versions Pseudo-versions 定义 Pseud...

  • 知识文章索引

    Golang 字符串 从golang字符串string遍历说起,聊聊go语言的Strings、bytes、rune...

  • 聊聊golang的log

    序 本文主要研究一下golang的log log flags 这几个flags可以用来设置log的pattern ...

  • 聊聊golang的defer

    序 本文主要研究一下golang的defer defer return先赋值(对于命名返回值),然后执行defer...

  • 聊聊golang的tunny

    序 本文主要研究一下tunny Worker Worker接口定义了Process、BlockUntilReady...

  • 聊聊golang的lumberjack

    序 本文主要研究一下golang的lumberjack Logger lumberjack.v2@v2.0.0/l...

  • Golang视角下的设计模式

    这篇文章想聊聊Golang语言下的设计模式问题,我觉得这个话题还是比较有意思的。Golang没有像java那样对设...

  • 聊聊golang的error增强

    序 本文主要研究一下golang的error增强 Errors in Go 1.13 golang的1.13版本对...

  • 聊聊golang的error包装

    序 本文主要研究一下golang的error包装 error error接口定义了Error方法,返回string...

  • 聊聊golang的包init

    序 本文主要研究一下golang中的包init 包init实例 pkg1 pkg2 pkg3 main 输出 小结...

网友评论

      本文标题:聊聊golang的Pseudo-versions

      本文链接:https://www.haomeiwen.com/subject/rcdiurtx.html