2016-12-15 45 views
-1

这是我的问题。 我有使用我自己创建的一些自定义软件包的应用程序。 我不想在git或其他地方发布这个软件包。 它们只是具有某些特定功能的软件包。Godep加工定制包装

所以,我的项目文件夹看起来像这样:

|--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: Package (github.com/u-mulder/package_one) not found

当然,我可以为我的每个软件包创建一个项目。随后的src的结构将类似于:

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

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

godep: error while inspecting "$GOPATH/src/github.com/u-mulder/package_one" : directory "$GOPATH/src/github.com/u-mulder/package_one" is not using a known version control system

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

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

类似的东西我发现here,但它不是关于vendor文件夹。

+0

为什么你使用“github.com”路径,如果你的来源不在github上?即使对于本地软件包,您也应该使用某种版本控制。如果没有版本控制,godep不能版本化软件包。 – JimB

+0

@JimB好吧,我可以改变我的包的路径到其他东西('本地'或其他),但这没有帮助。而我的所有项目都受版本控制(否则我不能把它放在heroku上)。 –

+0

但是你在问题中说过你不想为每个包创建一个git repo,所以我很困惑你想要做什么。如果您已经销售了所有必需的软件包,您希望godep实现什么功能? – JimB

回答

1

感谢@JimB意见,我发现了以下工作:

最明显和最简单的办法就是

keep your dependencies in GOPATH, with version control, and just let godep handle them all (@JimB)

所以,是的,这意味着将包(S)与git和所有这些东西。

在情况下,如果你不想/不能做到这一点,动作的顺序可以是:

  • 代码
  • 测试
  • vendor
  • 删除本地依赖条件(包)
  • 运行godep更新其他依赖条件(如httprouterlibpq等)
  • 手动添加本地依赖条件回vendor
  • 提交

但obvioulsy是不是的好办法。