如果 Go 存储库有 go.mod
文件在其根目录以及子文件夹中,子模块的版本是如何发布的?
例如,我的团队一直在使用 Vault 开发我们的内部 cli 工具。
我们最终使用了:github.com/hashicorp/vault/api
<-- 有一个 go.mod
和github.com/hashicorp/vault/commands
<-- 没有 go.mod 所以继承自 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/api@v1.3.3: reading github.com/hashicorp/vault/api/api/go.mod at revision api/v1.3.3: unknown revision api/v1.3.3
我认为这是由这个根模块和冲突引起的。
最佳答案
子模块的版本不一定与父模块的版本同步。它们应该被视为完全独立的模块,恰好位于相同的存储库/目录结构中。
查看https://github.com/hashicorp/vault/releases对于官方版本/标签——Go 支持分层 Git 标签来标记子模块的版本。例如,截至今天,vault
的最新版本本身是1.3.3,我只找到vault/api
在 v1.0.4 (这是带有 api/v1.0.4
的最新标签)
只需做一个go get
获取其最新版本。最初导入时实际上不必在 go.mod 中指定版本 - go
工具将为您找到最新版本。
关于go - 如何管理子模块的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601011/