go.mod 在修订时有 post-v0 模块路径 "git.example.com/owner/repo/v3"...?

标签 go go-modules

在更新 go.mod 以具有 /v3 后缀 ( https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher ) 之前,我的同事推送了一个标签 v3.0.1。我更新了模块路径 (go.mod) 和所有导入路径 (*.go) 来修复它,标记为 v3.0.2

现在的问题是:

go get -v git.example.com/owner/repo@v3.0.2
go: finding git.example.com/owner/repo v3.0.2
go: git.example.com/owner/repo@v0.0.0-20190722053407-d85c4f69ad17: go.mod has post-v0 module path "git.example.com/owner/repo/v3" at revision 
d85c4f69ad17

找到这个:go build keeps complaining that: go.mod has post-v0 module path

所以,我删除了 v3.0.0v3.0.1 标签,将其指向最新的提交,重新推送但问题仍然存在。

我注意到 go.mod 仍然引用旧版本作为间接依赖:

require (
    git.example.com/owner.repo v0.1.2 // indirect

即使我将其更改为 /v3 v3.0.2,它也会自动恢复为 v0.1.12

为什么?

我错过了什么吗?


2019 年 7 月 23 日星期二 05:54:56 +07

rm go.*
go mod init git.example.com/dependent/project
go mod tidy

go.mod 现在已正确更新:

require (
-       git.example.com/owner/repo v0.1.2
+       git.example.com/owner/repo/v3 v3.0.2

但是 go get -v git.example.com/owner/repo@v3.0.2 仍然返回错误:

go: finding git.example.com/owner/repo v3.0.2
go: git.example.com/owner/repo@v0.0.0-20190722053407-d85c4f69ad17: go.mod has post-v0 module path "git.example.com/owner/repo/v3" at revision 
d85c4f69ad17

(d85c4f69ad17master 中的最新提交)

我注意到go.sum中同时存在v0.1.2v3.0.2:

git.example.com/owner/repo v0.1.2 h1:mCGJEmyrFDTCGkRfUIORpqdrNkSONQ6K+AcTNgxqveY=
git.example.com/owner/repo v0.1.2/go.mod h1:FfUKnyPrARCtAXQZ3BQVJI7h2eJ0UpQBMLg4bNs4Kdc=
git.example.com/owner/repo/v3 v3.0.2 h1:mJtDKLeiP8vMRSZo08i/k/KDbIoZTlKW2aWu7DUBvMM=
git.example.com/owner/repo/v3 v3.0.2/go.mod h1:64LE0ts0Lk9InIQyhPYGmnxs6LZIl6H4Iorl1EXfqxo=

最佳答案

请注意我的go get命令:

go get -v git.example.com/owner/repo@v3.0.2

应该是:

go get -v git.example.com/owner/repo/v3@v3.0.2

关于go.mod 在修订时有 post-v0 模块路径 "git.example.com/owner/repo/v3"...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57143771/

相关文章:

docker - Bazel 使用本地 golang 模块构建 docker 容器

unit-testing - Golang模拟Redis群集服务器

go - 两个 gob 编码器产生不同的结果

regex - 在 Go 中返回定义的字符范围

arrays - 如何在 Go 中的 slice 或结构中存储不同的结构(不嵌入)

go - 如何在 go 模块上版本化和发布快照/未完成的工作?

rest - 从 Go Code 使用 API 时出现 401 错误,而 cURL 运行良好

go - 如何将已经存在的 golang 项目从 go 路径迁移到 go 模块

go - 下载后可以在模块中生成代码吗?

go - 如何覆盖 go 模块中的依赖项?