默认情况下,Go通过抓取主(github)中的最新版本或默认(mercurial)来拉取导入的依赖关系,如果找不到您的GOPATH的依赖关系。虽然这个工作流程很简单,但是要把握得很难。因为所有的软件变化都会导致一些风险,我想以可管理和可重复的方式降低这种潜在变化的风险,并避免无意中挑选依赖关系的变化,特别是通过CI服务器运行干净的构建或准备部署时。
什么是最有效的方式可以锁定(即锁定或捕获)一个包依赖关系,所以我不觉得自己无法重现一个旧的包,甚至更糟糕的是,当我即将发布?
—-更新—-
在Current State of Go Packaging的附加信息。当我结束(截至7.20.13)捕获依赖关系在第三方文件夹和管理更新(阿拉Camlistore),我仍在寻找更好的方式…
Here is a great list of options。
另外,一定要看到go 1.5 vendor/ experiment了解如何去处理未来版本的问题。
你可能会发现
Camlistore这个方法很有趣。
请参阅third party directory,特别是update.pl和rewrite-imports.sh脚本。这些脚本会更新外部存储库,如有必要,请更改导入,并确保外部存储库的静态版本与其余的camlistore代码签入。
这意味着camlistore具有完全可重复的构建,因为它是自包含的,但是第三方组件可以在camlistore开发人员的控制下进行更新。