默认情况下,Go通过在master(github)或默认(mercurial)中获取最新版本来提取导入的依赖项,如果它找不到您的GOPATH的依赖项。尽管该工作流程非常易于掌握,但要进行严格控制却变得有些困难。因为所有软件更改都会带来一定的风险,所以我想以一种可管理和可重复的方式降低这种潜在更改的风险,并避免无意间拾取依赖项的更改,尤其是在通过CI服务器运行全新版本或准备部署时。

我可以固定(即锁定或捕获)程序包依赖性的最有效方法是什么,这样我就不会发现自己无法重现旧的程序包,甚至更糟的是,在我要发布时意外损坏了?

- - 更新 - -

有关Current State of Go Packaging的附加信息。当我最终(截至7.20.13)在第3方文件夹中捕获依赖项并管理更新(ala Camlistore)时,我仍在寻找更好的方法...

Here is a great list of options

另外,请务必查看go 1.5 vendor/ experiment以了解go在将来的版本中如何解决该问题。

最佳答案

您可能会发现Camlistore有趣的方式。

请参阅third party directory,尤其是update.plrewrite-imports.sh脚本。这些脚本更新外部存储库,必要时更改导入,并确保使用camlistore代码的其余部分检入静态版本的外部存储库。

这意味着camlistore具有完全可重复的构建,因为它是自包含的,但是可以在camlistore开发人员的控制下更新第三方组件。

关于go - 在Golang中锁定外部依赖项 “versions”的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17078727/

10-17 01:31