如何将 go.mod 中的 Go 模块依赖项指向 repo 中的最新提交?

新手上路,请多包涵

从 v1.11 Go 开始添加了对模块的支持。命令

go mod init <package name>
go build

将生成 go.modgo.sum 包含包依赖项的所有已找到版本的文件。

如果模块没有任何版本,则使用该模块的最新提交。如果模块确实有版本,则最新的版本将被选为依赖项。

然而,有时我需要的功能尚未在已发布的版本中,而是来自该版本之后的提交。如何设置 go.mod 不指向模块的发布,而是指向模块存储库中的特定提交?

看起来我可以在 go.mod 中手动完成

module /my/module

require (
...
github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe
...
)

其中 v0.0.0 不对应于最后发布的发布标签, 20181121201909 将是一个提交时间戳和 af044c0995fe 将是提交哈希?这些信息是应该手工查找和输入,还是有更好的方法?

原文由 dimus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

只需“获取”您想要的提交哈希:

 go get github.com/someone/some_module@af044c0995fe

‘go get’ 将正确更新依赖文件(go.mod、go.sum)。

更多信息: https ://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies

原文由 Everton 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了埃弗顿关于使用 go get github.com/someone/some_module@af044c0995fe 获得特定提交的 答案,您还可以使用分支名称,例如:

  • go get github.com/someone/some_module@master
  • go get github.com/someone/some_module@dev_branch

这些示例在相应的分支上获得最新的提交。

它仍将作为 伪版本 记录在您的 go.mod 文件中,例如 v0.0.0-20171006230638-a6e239ea1c69 。 (这有助于基于标准 semver 排序提供跨所有版本的简单总排序)。

原文由 thepudds 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题