默认情况下,如果在您的 GOPATH 上找不到依赖项,Go 通过获取 master (github) 或默认 (mercurial) 中的最新版本来拉取导入的依赖项。虽然这个工作流程很容易掌握,但严格控制却变得有些困难。因为所有软件更改都会带来一些风险,所以我想以一种可管理和可重复的方式降低这种潜在更改的风险,并避免无意中发现依赖项的更改,尤其是在通过 CI 服务器运行干净构建或准备部署时。
我可以固定(即锁定或捕获)包依赖项的最有效方法是什么,这样我就不会发现自己无法重现旧包,或者更糟糕的是,在我即将发布时意外损坏?
- - 更新 - -
有关 Go Packaging 当前状态的附加信息。虽然我最终(截至 7.20.13)在第 3 方文件夹中捕获依赖项并管理更新(ala Camlistore),但我仍在寻找更好的方法......
此外,请务必查看go 1.5 供应商/实验,以了解 go 在未来版本中如何处理该问题。