去获得分叉回购的工作流程

时间:2016-03-02 18:17:27

标签: git github go

我正在使用apex并已将其与go get github.com/apex/apex/cmd/apex一起安装。我$GOPATH/bin/apex效果很好。我想为apex做一些贡献,所以我把它分叉并运行go get github.com/ajcrites/apex/cmd/apex。到目前为止一切都很好。

当我想要实际测试对项目的本地更改时,问题就出现了。我可以看到三个问题:

  1. 在本地运行go build不起作用,因为main.go文件直接从$GOPATH/src/github.com/apex导入。我需要从$GOPATH/src/github.com/ajcrites导入以进行测试
  2. 手动更改main.go以从ajcrites导入是不可能的,因为我无法/不应该提交这些更改。此外,即使它确实使用我的文件构建 - 我可以告诉它,因为它会使它们发现 - 发出的二进制文件根本不起作用。
  3. $GOPATH/src/github.com/ajcrites更改为/apex并按此方式构建确实有效,但有两个问题:
    • 文件系统目录与实际的回购名称不匹配
    • 我仍然希望能够使用/apex中的实际二进制文件,而不是为了测试本地更改而破坏它
  4. 是否有推荐的方法来克隆分叉的go存储库并在本地构建/测试?

2 个答案:

答案 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 ./...

那就是它。无需在任何现有程序中更改导入路径。如果您正在销售依赖项,则可以在销售副本中进行更改。