golang的Pseudo-versions使用问题解析

 更新时间:2023年07月20日 12:01:29   作者:codecraft  
这篇文章主要为大家介绍有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪了golang的Pseudo-versions使用问题解析,

本文主要研究一下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的问题。

以上就是golang的Pseudo-versions使用问题解析的详细内容,更多关于golang使用Pseudo-versions的资料请关注脚本之家其它相关文章!

相关文章

  • Go 通过结构struct实现接口interface的问题

    Go 通过结构struct实现接口interface的问题

    这篇文章主要介绍了Go 通过结构struct实现接口interface的问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • golang如何去除 context 的 deadline

    golang如何去除 context 的 deadline

    在使用 context 的时候遇到了开协程处理任务的情况,但是直接在协程里使用主线程的 context 会导致当主线程返回时协程任务也会因为 context cancel 而失败,本文提供了两种办法可以取消掉 context 里的 timeout 和 deadline,再设置一个新的 timeout 上去
    2023-03-03
  • golang 监听服务的信号,实现平滑启动,linux信号说明详解

    golang 监听服务的信号,实现平滑启动,linux信号说明详解

    这篇文章主要介绍了golang 监听服务的信号,实现平滑启动,linux信号说明详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Go实现用户每日限额的方法(例一天只能领三次福利)

    Go实现用户每日限额的方法(例一天只能领三次福利)

    这篇文章主要介绍了Go实现用户每日限额的方法(例一天只能领三次福利)
    2022-01-01
  • GORM不定参数的用法最佳实践

    GORM不定参数的用法最佳实践

    这篇文章主要为大家介绍了GORM不定参数的用法最佳实践,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解minio分布式文件存储

    详解minio分布式文件存储

    MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品,这篇文章主要介绍了minio分布式文件存储,需要的朋友可以参考下
    2023-10-10
  • Go语言程序查看和诊断工具详解

    Go语言程序查看和诊断工具详解

    这篇文章主要为大家详细介绍了Go语言程序查看和诊断工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Goland使用Go Modules创建/管理项目的操作

    Goland使用Go Modules创建/管理项目的操作

    这篇文章主要介绍了Goland使用Go Modules创建/管理项目的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Go语言中的IO操作及Flag包的用法

    Go语言中的IO操作及Flag包的用法

    这篇文章介绍了Go语言中的IO操作及Flag包的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go语言数据结构之插入排序示例详解

    Go语言数据结构之插入排序示例详解

    这篇文章主要为大家介绍了Go语言数据结构之插入排序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论