回答

收藏

在 Go 中使用分叉包导入

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

假设您有一个存储库,github.com/someone/repo你把它分叉到github.com/you/repo. 你想用叉子而不是主仓库,所以你做了一个5 S* y( e: e* B; z  C
    go get github.com/you/repo0 H7 b4 L, c9 N( S/ W! w+ _$ @( {  r# G
现在这个 repo 中的所有导入路径都将被破坏,这意味着如果仓库中有多个包通过绝对 URL 相互引用,将引用源而不是分支。
8 ~3 _0 s$ ^& T7 b手动克隆到正确的路径有没有更好的方法?
6 j5 d. z" l" h0 r
    git clone git@github.com:you/repo.git $GOPATH/src/github.com/someone/repo" x- H! u+ o9 Z* e, i; i% T
               
/ m& ~( l% A) O1 g/ U7 _* {+ V7 U    解决方案:                                                                ; h- q! u  S- ~/ K; Q: y
                                                                假如你用的是go modules。你可以使用replace指令
) t" p# N, W/ I- o2 V1 G& v) A6 |该replace该指令允许您提供另一条可能位于 的导入路径VCS(GitHub 或其他地方)或具有相对或绝对文件路径的本地文件系统中的另一个模块。replace无需更新实际源代码中的导入路径。0 M. \. k. s) S
所以你可以在 go.mod以下操作在文件中执行2 v- M/ F% }0 p/ J9 R
    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
    7 [& G/ p/ S' K
v3.2.1你的 repo 标签在哪里?也可以通过 CLI 完成
" `& Y- a5 N. z! \7 M9 \, B
    go mod edit -replace="github.com/someone/repo@v0.0.0=github.com/you/repo@v1.1.1"# s0 ~7 {  ~. Z; ~, O, v
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则