我正在使用apex
并已将其与go get github.com/apex/apex/cmd/apex
一起安装。我$GOPATH/bin/apex
效果很好。我想为apex做一些贡献,所以我把它分叉并运行go get github.com/ajcrites/apex/cmd/apex
。到目前为止一切都很好。
当我想要实际测试对项目的本地更改时,问题就出现了。我可以看到三个问题:
go build
不起作用,因为main.go
文件直接从$GOPATH/src/github.com/apex
导入。我需要从$GOPATH/src/github.com/ajcrites
导入以进行测试main.go
以从ajcrites
导入是不可能的,因为我无法/不应该提交这些更改。此外,即使它确实使用我的文件构建 - 我可以告诉它,因为它会使它们发现 - 发出的二进制文件根本不起作用。$GOPATH/src/github.com/ajcrites
更改为/apex
并按此方式构建确实有效,但有两个问题:
/apex
中的实际二进制文件,而不是为了测试本地更改而破坏它是否有推荐的方法来克隆分叉的go
存储库并在本地构建/测试?
答案 0 :(得分:1)
如果您不想更改代码中的导入路径,或者在项目中提供源代码,请不要更改代码位于GOPATH中的目录。如果要更改导入路径,则需要在所有源中重写该路径,或者最终导入包的多个版本。
进入++counter
目录,将$GOPATH/src/github.com/apex/apex
遥控器更改为分叉回购。按照惯例,我还将原始repo添加为origin
远程,因此我也可以方便地从那里获取和合并更改。
由于自从go1.6以来默认启用了vendoring,因此您可以将源放在您控制的upstream
目录中,并在那里进行修改。使用git子模块还可以让您将其保持在单独的版本控制下,但链接到您的项目。
答案 1 :(得分:0)
以下是我推荐并用于在GitHub上管理Gorilla组织的流程:
$ go get github.com/gorilla/csrf
$ cd $GOPATH/src/github.com/gorilla/csrf
# Alternatively, you can git remote remove origin + re-add as SSH
$ git remote add elithrar git@github.com:elithrar/csrf.git
$ git checkout -b new-feature-X
$ <do some work on it>
# Install those changes.
$ go install ./...
那就是它。无需在任何现有程序中更改导入路径。如果您正在销售依赖项,则可以在销售副本中进行更改。