如何组织具有供应商依赖关系的Go项目?

时间:2014-01-03 14:13:26

标签: git go

我正在开发一个不是包而是服务的Go项目。这取决于mgo等。由于此服务在法律上应该是安全版本并且具有高可用性,因此我们决定在项目中提供mgo依赖项。由于法律要求,我们不能仅依靠提取origin/master上的任何版本作为依赖项。

显然,这会破坏我们GOPATH的所有标准命令,因为它不再生活在GOPATH下,而是放在Git存储库中的vendor目录中:

~/src/link_tracker/
  main.go
  main_test.go
  vendor/
    src/
      labix.org/
        etc...

我们目前正在使用一个相当丑陋的Bash脚本来解决这个问题,该脚本会破坏大量的环境变量并进行一些符号链接,但如果我们可以在Makefile或类似文件下整合所有这些内容,那就太好了。

在不丢失mgo特定版本依赖项的情况下,组织此操作的最佳/正确方法是什么?

2 个答案:

答案 0 :(得分:1)

你应该使用https://github.com/kr/godep解决这个问题,现在非常稳定,因为你的代码应该存放在存储库(git,svn,mercurial等)中。

答案 1 :(得分:0)

我一直在玩的两个工具(用于类似的目标)是:

您应该看看是否可以使用其中一种而不是自己滚动。在labix.org的特殊情况下,johnny-deps似乎需要git托管的东西。