回答

收藏

在 Go 中使用分叉包导入

技术问答 技术问答 350 人阅读 | 0 人回复 | 2023-09-12

假设您有一个存储库,github.com/someone/repo你把它分叉到github.com/you/repo. 你想用叉子而不是主仓库,所以你做了一个
# ~" a; ?- m& u6 {; _
    go get github.com/you/repo2 l5 U# z7 _, o% }! A* ^
现在这个 repo 中的所有导入路径都将被破坏,这意味着如果仓库中有多个包通过绝对 URL 相互引用,将引用源而不是分支。; a1 X1 K$ S/ o* N/ ]' Y* q, O* ~
手动克隆到正确的路径有没有更好的方法?+ B, k+ e  V" `: k) {$ a% V; r
    git clone git@github.com:you/repo.git $GOPATH/src/github.com/someone/repo
    # z. U! o. V- ]- h6 U) O. v
               
+ m# {1 A2 E: d) {; B    解决方案:                                                               
' i+ @; D$ ]2 \                                                                假如你用的是go modules。你可以使用replace指令- M* C3 u9 ?: R9 d
该replace该指令允许您提供另一条可能位于 的导入路径VCS(GitHub 或其他地方)或具有相对或绝对文件路径的本地文件系统中的另一个模块。replace无需更新实际源代码中的导入路径。8 d- T* T, n2 X$ T$ `. q
所以你可以在 go.mod以下操作在文件中执行
- [& ^9 N7 h6 |2 `- K
    module github.com/yogeshlonkar/openapi-to-postmango 1.12require  github.com/someone/repo v1.20.0)replace github.com/someone/repo => github.com/you/repo v3.2.1
    # f8 L/ Z) R+ `
v3.2.1你的 repo 标签在哪里?也可以通过 CLI 完成& z% s0 {! }8 R* v
    go mod edit -replace="github.com/someone/repo@v0.0.0=github.com/you/repo@v1.1.1"
    / n1 i( m( D2 `  p% t: {6 B
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则