咨询关于Go语言版本管理及伪版本管理机制问题,分别是关于git中的tag与go get时@后版本的对应关系问题和commit与伪版本之间关系的问题

1. 运行环境

go 1.19.1,amd64

2. 问题描述?

  1. 对于git中的多个tag,哪些会被go语言VCS收纳。
  2. 对于同一个commit,伪版本号不唯一。我们如何判断使用的commit对应的哪个大版本中的伪版本。

    3. 您期望得到的结果?

希望能得到关于这两个问题的解答。

4. 您实际得到的结果?

  1. 例如 “github.com/apache/trafficcontrol” 依赖包,commit编号为ffcd4b26521b711996eaab1b415893251b7c4392的commit,在git中显示的tag为RELEASE-7.0.0和RELEASE-7.0.0-RC2,但是我们通过以下命令
    “go list -m -json github.com/apache/trafficcontrol@RELEASE-7.0.0“得到的却是伪版本“v1.1.4-0.20220721153627-ffcd4b26521b”。

  2. 例如 “github.com/go-yaml/yaml” 依赖包,通过以下两条命令:
    “go list -m -json github.com/go-yaml/yaml@b804f79fbc2b1acc1a67ef1ca515eecb1ff50ae4”
    “go list -m -json github.com/go-yaml/yaml/v2@b804f79fbc2b1acc1a67ef1ca515eecb1ff50ae4”
    都能正常反馈结果,但返回的伪版本信息分别是“v0.0.0-20190314144205-b804f79fbc2b”和“v2.2.2-0.20190314144205-b804f79fbc2b”,对于这两个伪版本,哪个才是正确的,我们应该如何判断。

讨论数量: 2

你到底在考虑啥。list出来的有go版本管理的本地hash,用来处理各个模块使用的依赖。第二个,v1和v2 版本有区别的。
go版本,开发需要知道的是有打tag的和和没有打tag的区别,其他的就是go版本需要处理的了

1年前 评论
Go_Freshman (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!