Godep处理定制包

时间:2016-12-15 13:52:56

标签: heroku go godeps

这是我的问题。 我有go-app,它使用我自己创建的一些自定义包。 我不想在git或其他地方发布这个软件包。 他们只是具有某些功能的包裹。

所以,我的项目文件夹如下所示:

|--src/github/u-mulder
  |--/project_name
       |--/Godeps  
       |--/public
       |--/vendor
       |--main.go  
       |--Procfile  

我将我的包裹放到vendor文件夹:

-/Godeps  
-/public
-/vendor
  |---/github.com/u-mulder/package_one/package_one.go
  |---/github.com/u-mulder/package_two/package_two.go
-main.go  
-Procfile  

好的,在我的main.go我成功导入了这个包:

import (
    "database/sql"
    "fmt"
    "github.com/u-mulder/package_one"
    "github.com/u-mulder/package_two"
    // more packages here    
)

一切正常。

现在我想准备我的项目,使用godep部署到heroku。 所以,在我的项目的根文件夹中,我运行

> godep save ./...

这就是我的问题 - 因为我的包已经在vendor文件夹中,我收到错误:

  

godep:找不到包(github.com/u-mulder/package_one)

当然,我可以为每个包创建一个项目。然后src的结构将如下所示:

|--src/github/u-mulder
  |--/package_one
    |-package_one.go
  |--/package_two
    |-package_two.go
  |--/project_name
       |--/Godeps  
       |--/public
       |--/vendor
       |--main.go  
       |--Procfile  

然后上面提到的问题消失了,但第二个问题出现了:

  

godep:检查"$GOPATH/src/github.com/u-mulder/package_one"时出错:目录"$GOPATH/src/github.com/u-mulder/package_one"未使用已知的版本控制系统

所以,当然我可以在每个项目包中创建一个.git存储库(也许这个问题就会消失),但我不想要,这些只是本地包,仅供我使用。

所以,问题是 - 在哪里放置我的自定义(或说 - 本地)软件包,godep可以找到它们,并且不希望它们是真实的"包?

我发现here类似的内容,但它不是vendor文件夹。

1 个答案:

答案 0 :(得分:1)

感谢@JimB的评论,我发现了以下内容:

最明显和最简单的解决方案就是

  

使用版本控制将您的依赖关系保存在GOPATH中,然后让godep全部处理它们(@JimB)

所以是的,这意味着将软件包添加到git和所有这些东西。

如果您不想/不能这样做,行动的顺序可以是:

  • 测试
  • vendor
  • 删除您当地的家属(套餐)
  • 运行godep更新其他家属(例如httprouterlibpq等)
  • 将您当地的家属手动添加回vendor
  • 提交

但是很明显,是一种好方法。