如果go.mod中的包版本不是semver格式,则执行`cmd/go: 'go mod edit -replace'`失败,

mnemlml8  于 4个月前  发布在  Go
关注(0)|答案(3)|浏览(42)

你正在使用的Go版本是什么( go version )?

$ go version
go version go1.12 linux/amd64

这个问题在最新版本中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env

$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/rafael/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/rafael/Work/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/go-1.12"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go-1.12/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/rafael/Work/go/src/github.com/rafaelvanoni/kube-controllers-private/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build260011560=/tmp/go-build -gno-record-gcc-switches"

你做了什么?

@heschik建议运行以下简化示例命令两次:

go mod edit -replace golang.org/x/tools@latest=github.com/golang/tools@latest

你期望看到什么?

你实际看到的是什么?
一个"版本必须是v1.2.3的形式"错误。

vatpfxk5

vatpfxk51#

根据@thepudds和@heschik的建议,解决方法是运行go list -m allgo mod tidy

5rgfhyps

5rgfhyps2#

如果有人有几分钟的时间,可以指导我正确的方向,我很乐意提供一个补丁。

vu8f3i0k

vu8f3i0k3#

go mod edit -replace old@${v}=new@{vv}, here, could we specify a branch for placeholder ${vv}.
Now it is not supported, a little inconvenient. But @commithash can workaround.

相关问题