【发布时间】:2020-03-10 16:49:56
【问题描述】:
我正在维护一个使用Semantic Versioning 发布的公司go 库。我切换到 go modules 用于库内的依赖管理,并在 v2+ 之后创建了一个新版本。我使用了here 记录的第一个策略,其中涉及修改 go.mod 文件和导入路径。
现在当人们使用 go get 命令时(在同样使用 go 模块的 repo 中)会出现错误:
invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3
有人熟悉这个问题吗?
为了让事情更简单,我创建了一个类似的简单示例:
我有包含三个文件(不包括 .gitignore)的 repo (github.com/Graphmasters/testing-gomod-versioning)。这些文件是:
- methods/method.go
package methods
func Method() {
println("Method")
}
- main.go
package main
import (
"github.com/Graphmasters/testing-gomod-versioning/v3/methods"
)
func main() {
methods.Method()
}
- go.mod
module github.com/Graphmasters/testing-gomod-versioning/v3
go 1.13
在 repo 中,我基于带有此代码的分支创建了一个带有标签 v3.0.0 的版本。
在使用 go modules 的 repo 中运行以下命令时遇到上述错误:
go get "github.com/Graphmasters/testing-gomod-versioning@v3.0.0"
【问题讨论】:
标签: go semantic-versioning go-modules