一尘不染

在 Go 中使用分叉包导入

go

假设您有一个存储库,github.com/someone/repo并且您将其分叉到github.com/you/repo. 你想使用你的叉子而不是主仓库,所以你做了一个

go get github.com/you/repo

现在这个 repo 中的所有导入路径都将被“破坏”,这意味着,如果存储库中有多个包通过绝对 URL 相互引用,它们将引用源,而不是分支。

有没有更好的方法将其手动克隆到正确的路径中?

git clone git@github.com:you/repo.git $GOPATH/src/github.com/someone/repo

阅读 176

收藏
2021-11-18

共1个答案

一尘不染

如果您使用的是go modules。你可以使用replace指令

replace指令允许您提供另一个导入路径,该路径可能是位于 VCS(GitHub 或其他地方)或具有相对或绝对文件路径的本地文件系统中的另一个模块。使用来自replace指令的新导入路径,无需更新实际源代码中的导入路径。

所以你可以在 go.mod 文件中执行以下操作

module github.com/yogeshlonkar/openapi-to-postman

go 1.12

require (
    github.com/someone/repo v1.20.0
)

replace github.com/someone/repo => github.com/you/repo v3.2.1

v3.2.1你的 repo 上的标签在哪里。也可以通过 CLI 完成

go mod edit -replace="github.com/someone/repo@v0.0.0=github.com/you/repo@v1.1.1"
2021-11-18