为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用分叉模块和版本化 Go 模块(v1.11+,GO111MODULE=on)

如何使用分叉模块和版本化 Go 模块(v1.11+,GO111MODULE=on)

Go
慕村9548890 2023-06-26 16:47:54
我分叉了一个 go 模块,并想在我的项目中使用该分叉,该项目通过v1.12. 我的代码不在我的GOPATH.我的项目go.mod:module github.com/me/myprojgo 1.12require (       go.larrymyers.com/protoc-gen-twirp_typescript v0.0.0-20190605194555-ffbfe407b60f)replace go.larrymyers.com/protoc-gen-twirp_typescript => github.com/rynop/protoc-gen-twirp_typescript masterprotoc-gen-twirp_typescript 是一个工具protoc,所以这是我的tools.go:// +build toolspackage toolsimport (    // protocol buffer compiler plugins    _ "github.com/golang/protobuf/protoc-gen-go"    _ "github.com/mwitkow/go-proto-validators/protoc-gen-govalidators"    _ "github.com/twitchtv/twirp/protoc-gen-twirp"    _ "github.com/rynop/protoc-gen-twirp_typescript")当我运行go mod tidy下载依赖项时,出现以下错误:go: finding github.com/rynop/protoc-gen-twirp_typescript mastergo: finding github.com/rynop/protoc-gen-twirp_typescript latestgo: github.com/rynop/protoc-gen-twirp_typescript@v0.0.0-20190618203538-a346b5d9c8fb: parsing go.mod: unexpected module path "go.larrymyers.com/protoc-gen-twirp_typescript"为什么我会收到此错误?我认为替换指令go.mod允许分叉模块 go.mod保持不变。
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您有以下内容replace:


replace go.larrymyers.com/protoc-gen-twirp_typescript => github.com/rynop/protoc-gen-twirp_typescript master


如果我遵循的话,就是有效的replace originalname => forkname


我认为问题在于您正在使用分叉的名称而不是原始名称进行导入:


import (

    // protocol buffer compiler plugins

    _ "github.com/golang/protobuf/protoc-gen-go"

    _ "github.com/mwitkow/go-proto-validators/protoc-gen-govalidators"

    _ "github.com/twitchtv/twirp/protoc-gen-twirp"

    _ "github.com/rynop/protoc-gen-twirp_typescript"   <<<< PROBLEM, using fork name

)

您看到的错误消息似乎是go抱怨该问题的命令。


我怀疑如果您在导入语句中使用原始名称,它会起作用:


import (

    ...

    _ "go.larrymyers.com/protoc-gen-twirp_typescript"   <<<< original name

)

您还应该运行以查看最终选定的版本,包括它显示任何和指令go list -m all的结果。replaceexclude


查看完整回答
反对 回复 2023-06-26
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

如何使用分叉模块[?]

你不能。Github 分支会生成一个不相关的包,很可能甚至无法构建。

不要分叉,克隆。然后推送到另一个遥控器(可以是叉子)。


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信