人们无法使用Gomodules使用我的v2 +语义版本发布

时间:2019-11-14 16:38:36

标签: go semantic-versioning go-modules

我正在维护公司的 go 库,该库使用Semantic Versioning发布。我切换到库中的 go modules 进行依赖性管理,并在 v2 + 之后创建了一个新版本。我使用了记录在案的here的第一个策略,该策略涉及修改 go.mod 文件并导入路径。

现在,当人们使用go get命令(在也使用go模块的仓库中)时,出现错误:

invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v3

有人知道这个问题吗?


为简化起见,我创建了一个相似而简单的示例:

我有三个文件(不包括 .gitignore )的仓库( 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

在回购协议中,我根据带有此代码的分支创建了带有标签 v3.0.0 的发行版。

在使用go模块的仓库中运行以下命令时,会遇到上述错误:

go get "github.com/Graphmasters/testing-gomod-versioning@v3.0.0"

1 个答案:

答案 0 :(得分:0)

模块名称必须为github.com/Graphmasters/testing-gomod-versioning/v3或github.com/Graphmasters/testing-gomod-versioning.v3,而不是github.com/Graphmasters/testing-gomod-versioning

用户应该能够执行github.com/Graphmasters/testing-gomod-versioning/v3@v3.0.0而不是github.com/Graphmasters/testing-gomod-versioning@v3.0.0

示例:您可以检查以下v3软件包的mod文件-https://search.gocenter.io/gotest.tools~2Fv3/info?version=v3.0.0