如何管理golang子模块的版本?

问题描述 投票:-2回答:2

我有一个有点奇怪的问题,我的团队一直在使用我们内部cli工具的Vault。

我们最终使用了:

github.com/hashicorp/vault/api

[github.com/hashicorp/vault/commands github.com/hashicorp/vault

我正在尝试将Vault / api更新到最新版本1.3.3:

github.com/hashicorp/vault v1.3.3
github.com/hashicorp/vault/api v1.3.3

问题是我得到:

go: github.com/hashicorp/vault/[email protected]: reading github.com/hashicorp/vault/api/api/go.mod at revision api/v1.3.3: unknown revision api/v1.3.3

我认为这是由此根模块和冲突引起的。那有意义吗?任何想法在这种情况下该怎么办?

go hashicorp-vault
2个回答
0
投票

子模块的版本不一定与父模块的版本保持同步。应将它们视为完全独立的模块,恰好存在于相同的存储库/目录结构中。

检查https://github.com/hashicorp/vault/releases的正式版本/标签-Go支持分层的Git标签来标记子模块的版本。例如,截至今天,vault本身的最新版本是1.3.3,但我在v1.0.4上只找到了vault/api(这是api/v1.0.4的最新标记)

只需执行go get即可获取其最新版本。最初导入时,实际上不需要在go.mod中指定版本-go工具将为您找到最新版本。


0
投票

Go模块不过是Go软件包(文件夹)的集合。属于软件包的源文件应放在各自的单独文件夹中。在Go中有一个约定,就是使用与软件包相同的名称来命名此文件夹。

[无论何时在任何子文件夹下运行go get注释,它都会更新到当前目录,并且任何父目录都有go.mod。

© www.soinside.com 2019 - 2024. All rights reserved.