默认情况下,Go会通过在主分支(Github)或默认分支(Mercurial)中抓取最新版本来获取导入的依赖项,如果在您的GOPATH中找不到该依赖项。虽然这种工作流程很容易理解,但对于严格控制来说有点困难。因为所有的软件更改都会涉及一些风险,我希望以可管理和可重复的方式减少潜在更改的风险,并避免在运行干净构建(通过CI服务器)或准备部署时意外地捕获依赖项的更改,特别是不小心选择了一个错误的依赖项。
我应该采取什么最有效的方式来锁定/捕获包依赖关系,使自己不会发现无法重现旧包,甚至更糟的是,在准备发布时出现意外的错误?
---- 更新 ----
有关Go打包的当前状态的其他信息. 尽管我最终(截至2013年7月20日)在第三方文件夹中捕获了依赖项并进行了更新管理(如Camlistore),但我仍在寻找更好的方法......
此外,请务必查看Go 1.5供应商/实验,以了解Go将如何处理未来版本中的问题。