我正在用Go编写一个要部署在heroku上的项目,使用godep管理依赖项。
当我godep save
时,我既得到一个Godeps.json
文件,列出了我的版本依赖性,又得到了_workspace/
目录,其中包含复制了所有依赖项的源。我不想提交_workspace
,所有这些代码已经在其他地方的github上了。似乎Godeps.json
具有我们在heroku buildpack时对版本锁定的依赖项进行go get
所需的所有信息。
Several sources建议提交完整的Godeps/
目录,但其他人建议使用might not be necessary。
Godep文档并没有太大帮助:
Godeps.json 是文件吗?
最佳答案
官方答案:
从GitHub问题#131:
这也是godep
的作者谈论他的项目和背后的想法-Vendoring and Import Path Rewriting
个人意见:
我认为没有正确的方法来做到这一点。
提交 vendor 库看起来确实很尴尬,但是它具有以下优点:
当更新到较新的版本时,或者在跟踪正在使用的代码时,仅跟踪更改,这将很有帮助。
最后由您自己权衡利弊。就我个人而言,每次必须提交 vendor 代码时,我都会感到畏缩,但在Go项目中,我却这样做。最起码到现在。
同样,像Google和Facebook这样的公司大多将所有内容都保存在一个存储库中,其中包括 vendor 代码(或者我听说)。
关于该主题的有趣文章:
Go Package Management