go get 无法从 github 上的私人仓库获取模块
go get can't get a module from a private repo on github
我有一个带有 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
有什么问题?
您 v0.1
的 go modules semver 不适合 go modules
消费。它包括 major
版本、minor
版本 - 但缺少 patch
编号:
注意:此处的 Pre-release Identifier
后缀 (-beta.2
) 是可选的。
另请参阅 publishing go modules 文档:
Every required module in a go.mod has a semantic version, the minimum
version of that dependency to use to build the module.
A semantic version has the form vMAJOR.MINOR.PATCH.
所以将您的标签更新为 v0.1.0
它应该可以工作。
根据错误,我认为您对私有存储库没有任何问题。相反,在我看来,您的 go.mod
文件将模块声明为
module key-value-mod
...
虽然应该
module github.com/dwschulze/key-value-mod
...
有两件事导致了这种情况。我必须清除我的模块缓存。第二个是 Simon 在上面提到的模块名称必须是将发布模块的 repo URL。
我不喜欢 go 模块与源代码存储库的紧密耦合,但这是现实。
我有一个带有 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
有什么问题?
您 v0.1
的 go modules semver 不适合 go modules
消费。它包括 major
版本、minor
版本 - 但缺少 patch
编号:
注意:此处的 Pre-release Identifier
后缀 (-beta.2
) 是可选的。
另请参阅 publishing go modules 文档:
Every required module in a go.mod has a semantic version, the minimum version of that dependency to use to build the module.
A semantic version has the form vMAJOR.MINOR.PATCH.
所以将您的标签更新为 v0.1.0
它应该可以工作。
根据错误,我认为您对私有存储库没有任何问题。相反,在我看来,您的 go.mod
文件将模块声明为
module key-value-mod
...
虽然应该
module github.com/dwschulze/key-value-mod
...
有两件事导致了这种情况。我必须清除我的模块缓存。第二个是 Simon 在上面提到的模块名称必须是将发布模块的 repo URL。
我不喜欢 go 模块与源代码存储库的紧密耦合,但这是现实。