0

我有一个带有 Go 模块的(私有)github 存储库。我添加了标签v0.1,github 显示了该标签。我已经设置go env -w GOPRIVATE=github.com/dwschulze/key-value-mod并且我的 ~/.gitconfig 有[url "git@github.com:"] insteadOf = https://github.com/

go get无法检索我的模块:

$ go get github.com/dwschulze/key-value-mod
go: github.com/dwschulze/key-value-mod upgrade => v0.0.0-20210907155619-9116b97467d6
go get: github.com/dwschulze/key-value-mod@v0.0.0-20210907155619-9116b97467d6: parsing go.mod:
        module declares its path as: key-value-mod
                but was required as: github.com/dwschulze/key-value-mod

$ go get github.com/dwschulze/key-value-mod@v0.1
go get github.com/dwschulze/key-value-mod@v0.1: no matching versions for query "v0.1"

有什么问题go get

4

3 回答 3

2

基于该错误,我认为您对私人回购没有任何问题。相反,在我看来,您的go.mod文件将模块声明为

module key-value-mod

...

虽然它应该是

module github.com/dwschulze/key-value-mod

...
于 2021-09-07T19:21:08.737 回答
0

您的go modules semverv0.1不适合go modules消费。它包括一个major版本,minor版本 - 但缺少patch数字:

v1.4.0-beta.2

注意:Pre-release Identifier这里的后缀 ( -beta.2) 是可选的。

另请参阅发布 go modules文档:

go.mod 中的每个必需模块都有一个语义版本,即用于构建模块的该依赖项的最低版本。

语义版本的格式为 vMAJOR.MINOR.PATCH。

因此,将您的标签更新为v0.1.0它应该可以工作。

于 2021-09-07T19:17:11.197 回答
0

有两件事造成了这种情况。我不得不清除我的模块缓存。第二个是正如 Simon 上面提到的,模块名称必须是模块将发布的 repo URL。

我不喜欢 go 模块与源代码存储库的紧密耦合,但这是现实。

于 2021-09-07T20:11:39.597 回答