go - 如何管理子模块的版本?

标签 go hashicorp-vault

如果 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/

相关文章:

go - 如何在 Go 中编写接受 string 和 int64 类型的函数?

jenkins - 获取所有 secret 并将其放入 Jenkins 和 hashicorp 保险库的 env 文件中

rest - Go Gin-Gonic,从 POST 请求中获取文本

go - 如何在go lang中接收多帧二进制数据

kubernetes - k8s : getting error 1 Insufficient memory, 1 个节点上的 HashicorpVault 与 Pod 亲和性/反亲和性不匹配

mysql - 将 MySQL Enterprise 加密 key 存储在 Azure Key Vault 中

hashicorp-vault - Hashicorp vault 如何列出所有角色

hashicorp-vault - vault write 和 vault kv put 有什么区别?

go - append() 中的 "..."符号不适用于附加不同类型的 slice

api - 如何将原始数据传递给发布请求