首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该提交Godeps/_ Godeps.json还是足够的?

我应该提交Godeps/_ Godeps.json还是足够的?
EN

Stack Overflow用户
提问于 2014-10-13 06:38:16
回答 3查看 3.1K关注 0票数 12

我正在用Go编写一个要部署在heroku上的项目,用戈德普管理依赖关系。

当我godep save时,我得到一个Godeps.json文件,其中列出了我的依赖项和版本,还有一个_workspace/目录,其中包含复制的所有依赖项的源代码。我宁愿不提交_workspace,所有的代码都已经在其他地方的github上了。在heroku中,Godeps.json似乎拥有我们需要的所有信息,以go get版本锁定的依赖项。

几个 资料来源建议提交完整的Godeps/目录,但其他人建议使用可能没必要

godep的文档没有多大帮助:

这将将依赖项列表保存到文件Godeps/Godeps.json中,并将它们的源代码复制到Godeps/_工作区中。阅读它的内容,并确保它看起来合理。然后将文件提交到版本控制。

Godeps.json 是文件吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-13 14:25:25

官方答覆:

来自GitHub问题#131

godep的目的是用于供应商依赖关系,并将_workspace目录提交给版本控制。参见建议中讨论的@kr链接到#123 (提案:http://goo.gl/RpYs8e)中的提案文档,godep过去有一种模式(-copy=false)支持不支持依赖项。我的猜测是,自述中的模糊语言可能正是由于这个原因造成的。此模式已被删除,如#123中所记录的。

这里还有godep的作者谈论他的项目和背后的想法- 抓取和导入路径重写

个人意见:

我不认为有正确的方法。

提交供应商库看起来确实很尴尬,但它有它的优点:

  • 您不依赖外部服务(GitHub等)。GitHub中断了,也许您有一些可怕的公司策略阻止您使用它,可能存储库消失了,或者它的历史被重写了,也许您在防火墙后面(临时/构建服务器),等等。
  • 每次更新您的diff,您就可以很好地了解所发生的变化。这有助于更新到更新版本,或者只是跟踪更改,如果你屏幕上正在使用的代码。

最后,由你来权衡利弊。就我个人而言,每当我不得不提交供应商代码时,我都会退缩,但在我的Go项目中,我会这样做。至少现在是这样。

而且,像Google和Facebook这样的公司大多把所有的东西都保存在一个存储库中,其中包括供应商代码(至少我听说过)。

关于这个主题的有趣文章:Go包装管理

票数 18
EN

Stack Overflow用户

发布于 2014-10-13 07:02:45

godep需要json文件来读取依赖项,如update.go所示。

因此,该文件需要进行版本化。

但是godep/_workspace,这意味着它是一个“生成的”内容:您不需要对其进行版本化。

票数 2
EN

Stack Overflow用户

发布于 2014-10-13 08:39:58

只需将Godeps.json文件添加到repo中,将_workspace添加到.gitignore列表:)。

虽然您的代码应该完全包含在您的回购中,但依赖项必须以某种方式被引用(godep.json、package.json、git子模块.你自己选择),仅此而已。同样的策略也适用于npm,bower,apt和所有其他包装经理。

你的回购-你的东西+对供应商库的引用(当然,当可能的时候,你不能引用sourceforge zip文件)。

正如@VonC所说,我们不想对供应商libs进行版本化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26334220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档