Godep 处理自定义包
Godep processing custom packages
这是我的问题。
我有 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: 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
可以找到它们并且不希望它们成为 "real" 包?
我发现了类似的东西 here,但它与 vendor
文件夹无关。
感谢@JimB 的评论,我发现了以下内容:
最明显和最简单的解决方案就是
keep your dependencies in GOPATH, with version control, and just let godep handle them all (@JimB)
所以是的,这意味着将包添加到 git 和所有这些东西。
如果您不want/can不这样做,操作顺序可以是:
- 代码
- 测试
- 从
vendor
中删除您的本地依赖项(包)
- 运行
godep
更新其他依赖项(如 httprouter
、libpq
等)
- 手动将您的本地依赖项添加回
vendor
- 提交
但很明显,这不是一个好方法。
这是我的问题。 我有 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: 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
可以找到它们并且不希望它们成为 "real" 包?
我发现了类似的东西 here,但它与 vendor
文件夹无关。
感谢@JimB 的评论,我发现了以下内容:
最明显和最简单的解决方案就是
keep your dependencies in GOPATH, with version control, and just let godep handle them all (@JimB)
所以是的,这意味着将包添加到 git 和所有这些东西。
如果您不want/can不这样做,操作顺序可以是:
- 代码
- 测试
- 从
vendor
中删除您的本地依赖项(包)
- 运行
godep
更新其他依赖项(如httprouter
、libpq
等) - 手动将您的本地依赖项添加回
vendor
- 提交
但很明显,这不是一个好方法。