在更新 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.0
和 v3.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
(d85c4f69ad17
是 master
中的最新提交)
我注意到go.sum
中同时存在v0.1.2
和v3.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/