-10

这是我的问题。我有使用我自己创建的一些自定义包的 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. 所以,在我的项目的根文件夹中,我运行

> 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可以找到它们并且不希望它们成为“真实”包?

我在这里找到了类似的东西,但这与vendor文件夹无关。

4

1 回答 1

1

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

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

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

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

如果您不想/不能这样做,则操作顺序可以是:

  • 代码
  • 测试
  • vendor
  • 运行godep以更新其他依赖项(例如httprouterlibpq等)
  • 手动将本地依赖项添加回vendor
  • 犯罪

但显然这不是一个好方法。

于 2016-12-15T16:44:41.757 回答