我正在用Go编写一个要部署在heroku上的项目,用戈德普管理依赖关系。
当我godep save时,我得到一个Godeps.json文件,其中列出了我的依赖项和版本,还有一个_workspace/目录,其中包含复制的所有依赖项的源代码。我宁愿不提交_workspace,所有的代码都已经在其他地方的github上了。在heroku中,Godeps.json似乎拥有我们需要的所有信息,以go get版本锁定的依赖项。
几个 资料来源建议提交完整的Godeps/目录,但其他人建议使用可能没必要。
godep的文档没有多大帮助:
这将将依赖项列表保存到文件Godeps/Godeps.json中,并将它们的源代码复制到Godeps/_工作区中。阅读它的内容,并确保它看起来合理。然后将文件提交到版本控制。
Godeps.json 是文件吗?
发布于 2014-10-13 14:25:25
官方答覆:
来自GitHub问题#131
godep的目的是用于供应商依赖关系,并将_workspace目录提交给版本控制。参见建议中讨论的@kr链接到#123 (提案:http://goo.gl/RpYs8e)中的提案文档,godep过去有一种模式(-copy=false)支持不支持依赖项。我的猜测是,自述中的模糊语言可能正是由于这个原因造成的。此模式已被删除,如#123中所记录的。
这里还有godep的作者谈论他的项目和背后的想法- 抓取和导入路径重写
个人意见:
我不认为有正确的方法。
提交供应商库看起来确实很尴尬,但它有它的优点:
最后,由你来权衡利弊。就我个人而言,每当我不得不提交供应商代码时,我都会退缩,但在我的Go项目中,我会这样做。至少现在是这样。
而且,像Google和Facebook这样的公司大多把所有的东西都保存在一个存储库中,其中包括供应商代码(至少我听说过)。
关于这个主题的有趣文章:Go包装管理
发布于 2014-10-13 07:02:45
发布于 2014-10-13 08:39:58
只需将Godeps.json文件添加到repo中,将_workspace添加到.gitignore列表:)。
虽然您的代码应该完全包含在您的回购中,但依赖项必须以某种方式被引用(godep.json、package.json、git子模块.你自己选择),仅此而已。同样的策略也适用于npm,bower,apt和所有其他包装经理。
你的回购-你的东西+对供应商库的引用(当然,当可能的时候,你不能引用sourceforge zip文件)。
正如@VonC所说,我们不想对供应商libs进行版本化。
https://stackoverflow.com/questions/26334220
复制相似问题