我叉形一个go模块,并希望在我的项目中使用通过v1.12使用版本化模块的叉。我的代码不在我的GOPATH中。
我的项目的go.mod
module github.com/me/myproj
go 1.12
require (
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_typescript是protoc的一个工具,下面是我的tools.go
// +build tools
package tools
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"
)当我运行go mod tidy下载我的依赖项时,我得到了以下错误:
go: finding github.com/rynop/protoc-gen-twirp_typescript master
go: finding github.com/rynop/protoc-gen-twirp_typescript latest
go: 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保持不变。
发布于 2019-08-01 21:12:17
您有以下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语句中使用原始名称,它将有效:
import (
...
_ "go.larrymyers.com/protoc-gen-twirp_typescript" <<<< original name
)您还应该运行go list -m all来查看最终选择的版本,包括它显示任何replace和exclude指令的结果。
发布于 2019-06-19 19:11:09
如何使用分叉模块
你不能。Github叉会产生一个不相关的包,很可能是无法构建的。
别分叉,克隆人。然后推送到另一个遥控器(可以是叉子)。
https://stackoverflow.com/questions/56671133
复制相似问题