gpt4 book ai didi

go - 拥有 vendor 文件夹有什么好处?

转载 作者:行者123 更新时间:2023-12-01 21:15:58 31 4
gpt4 key购买 nike

我无法真正理解拥有 vendor 文件夹的目的。根据我了解到的情况, vendor 文件夹似乎只有在您尝试使您的存储库与早于 1.11 的 golang 版本兼容时才有用。 .我们正在运行 golang 1.12.14 .

当我把这件事告诉我的同事时,他说:

Please use vendor with modules - go doesn't have a global artifactory. this is, currently, the best option to make sure you have hermetic builds and your code doesn't break when somebody changes something in their repo.



我以为这就是 Go 模块的作用?我问了这个问题,评论者说我不应该使用 vendor ? Does it make sense to add `go mod vendor` to a pre-commit hook?

最佳答案

Go modules通过将依赖项锁定到 go.sum 中,确保您能够确定地构建包。 .话虽这么说,确定性构建项目的 promise 只有在您的依赖项将来仍然可以访问时才成立。你不知道会不会是这样。

另一方面,无论有没有 Go 模块, vendor 都会带来更强的保证,因为它可以在代码旁边提交依赖项。因此,即使不再可以访问远程存储库(删除、重命名等),您仍然可以构建您的项目。

另一种选择是使用 Go 模块和代理。您可以在 official documentation 中找到更多信息.您还可以查看一些 OSS 实现,例如 gomods/athensgoproxy/goproxy .如果您不想设置和维护自己的代理,市场上有一些商业优惠。

你也应该go mod vendor每次你提交?好吧,最终取决于您想要的保证类型。但是,是的,利用代理或出售您的依赖项有助于更接近可重现的构建。

关于go - 拥有 vendor 文件夹有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61547433/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com