首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有版本的Go模块(v1.11+,GO111MODULE=on)的分叉模块

如何使用带有版本的Go模块(v1.11+,GO111MODULE=on)的分叉模块
EN

Stack Overflow用户
提问于 2019-06-19 15:20:49
回答 2查看 10.4K关注 0票数 21

叉形一个go模块,并希望在我的项目中使用通过v1.12使用版本化模块的叉。我的代码不在我的GOPATH中。

我的项目的go.mod

代码语言:javascript
复制
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 master

protoc_typescript是protoc的一个工具,下面是我的tools.go

代码语言:javascript
复制
// +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下载我的依赖项时,我得到了以下错误:

代码语言:javascript
复制
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保持不变。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

我认为问题在于,导入时使用的是叉的名称,而不是原始名称:

代码语言:javascript
复制
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语句中使用原始名称,它将有效:

代码语言:javascript
复制
import (
    ...
    _ "go.larrymyers.com/protoc-gen-twirp_typescript"   <<<< original name
)

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

票数 16
EN

Stack Overflow用户

发布于 2019-06-19 19:11:09

如何使用分叉模块

你不能。Github叉会产生一个不相关的包,很可能是无法构建的。

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

票数 -10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56671133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档