我正在使用
apex
并安装了go go 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并构建该方法确实有效,但有两个问题:
>文件系统目录与实际的repo名称不匹配,这很奇怪
>我仍然希望能够使用来自/ apex的实际二进制文件,而不是为了测试本地更改而破坏它
是否有推荐的方法来克隆分叉的存储库并在本地构建/测试?
最佳答案 如果您不想更改代码中的导入路径,或者在项目中提供源代码,请不要更改代码位于GOPATH中的目录.如果要更改导入路径,则需要在所有源中重写该路径,或者最终导入包的多个版本.
进入$GOPATH / src / github.com / apex / apex目录并将原点远程更改为分叉仓库.按照惯例,我还将原始repo添加为上游远程,因此我也可以方便地从那里获取和合并更改.
由于自从go1.6以来默认启用了vendoring,因此您可以将源放在您控制的供应商/目录中,并在那里进行修改.使用git子模块还可以让您将其保持在单独的版本控制下,但链接到您的项目.