我有一个一直托管在非模块存储库中的小型库,但现在我想将其转换为Go模块.

我成功地执行了以下操作:

go mod init
go mod tidy

创建go.modgo.sum文件时没有错误,库仍然通过测试.

之前的版本是v2.0.0,所以我将版本增加到v3.0.0,并在go.mod中的模块名称的末尾添加了/v3.从我在网上看到的情况来看,这就是所需要的一切. 我的go.mod个文件如下所示:

module tssgit.reyrey.com/teschste/go-utils/v3

go 1.19

require (
    github.com/lib/pq v1.10.9
    golang.org/x/text v0.9.0
)

然后我把这个库发布到我们内部的Git服务器上,我想我已经准备好了.

当我try 将该库添加到新的围棋模块项目中时,收到以下消息:

Installing: tssgit.reyrey.com/teschste/go-utils/v3
Installing dependency: tssgit.reyrey.com/teschste/go-utils/v3
go: module tssgit.reyrey.com/teschste/go-utils@upgrade found (v2.0.0+incompatible), but does not contain package tssgit.reyrey.com/teschste/go-utils/v3
Failed to add dependencies: exit status 1

我发现,如果我将v3.0.0发布到一个新路径(tssgit.reyrey.com/teschste/go-utils2),我能够成功地将它添加到我的新项目中,即使我再次递增了主版本.

我是不是错过了一些可以让我继续以同样的方式发布的东西,或者这只是你不能做的事情?

如有任何帮助,我们将不胜感激!

推荐答案

是的,这是受支持的.而版本子目录是可选的.

我发现了一个 case ,它将导致您看到的错误.这在主分支没有被更新(仍然指向标签v2.0.0)并且新标签v3.0.0没有被推送到服务器时发生.请仔细判断以确保远程存储库已更新.

如果远程存储库已更新,但仍然不起作用,您可以将问题范围缩小为:

  1. 使用-x选项运行go get:

    $ go get -x tssgit.reyrey.com/teschste/go-utils/v3
    
  2. cd添加到输出所示的目录中.目录路径如下所示:

    /home/username/go/pkg/mod/cache/vcs/96f42aa32430149c99ad6625ceafc5b59e047b9e11d6a03f687d59845b53b2d5
    
  3. 在此目录中,运行git ls-remote -q origin并判断输出.下面的示例是在我的机器上无法工作时的示例.您可以看到HEADv2.0.0都指向相同的提交ID,而不是v3.0.0.

    $ git ls-remote -q origin
    5ac4c172806e80461086ea9feb485cec0b6a27f0    HEAD
    5ac4c172806e80461086ea9feb485cec0b6a27f0    refs/heads/main
    bbdc583c0b83489db1a30fa6ca8559ffa295a74d    refs/heads/other-branch
    5ac4c172806e80461086ea9feb485cec0b6a27f0    refs/tags/v2.0.0
    

Go相关问答推荐

如何获得与cksum相同的CRC 32?

使用恶意软件 scanner (ClamAV)时的Google云存储桶上传文件验证

如何在定制普罗米修斯出口商中测试动态计量注册?

向API网关终结点发出POST请求时出现AWS Lambda With Go:";Rune me.InvalidEntrypoint";错误

Golang文本/模板序列范围

如何将GoFr筛选器用于查询参数?

golang 的持久隐蔽服务

使用Golang的Lambda自定义al2运行时,初始化阶段超时

Golang prometheus:有没有办法衡量出站请求的指标?

如何在 fyne-io/fyne 中设置文本的字母间距?

在本地 go 应用程序上获取秘密的正确策略

如何使用管理员权限启动 powershell 进程并重定向标准输入 (os.exec)

甚至用天真的洗牌分配?

使用自定义处理程序 nats golang 保留订阅方法

枚举的 Golang 验证器自定义验证规则

接受通道和切片的通用函数

在 Go 模板中对照片使用随机 Int

如何在golang中使用ozzo验证进行时间最大验证

带有 grpc 的 protobuf 用于拆分包中的 Go

为什么 Go 不允许将一个泛型分配给另一个泛型?