如何阻止go get更新go.mod文件



TL;DR:有什么办法可以强制阻止go get更改go.mod文件吗?

当我对某些包进行go get时,例如:

$ go get github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin

它将打印出它有更新的依赖项(在我的go.mod文件中定义(:

go get: upgraded github.com/AsynkronIT/protoactor-go v0.0.0-20200815184336-b225d28383f2 => v0.0.0-20210405044454-10bc19881ad6
# (...) Note, this happens for other packages, not just `AsynkronIT/protoactor-go`.

这会导致go.mod文件在CI生成过程中发生更改,并影响后续的生成阶段,在生成某些内容时,它将尝试使用依赖项的更新版本,这可能会带来破坏性的更改,而不是最初在go.mod文件上定义的版本。

我已经尝试使用-mod=readonly或确保未使用-u标志,但它仍然会更新go.mod文件,例如:

$ GOFLAGS=-mod=readonly go get github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin
go get: upgraded github.com/AsynkronIT/protoactor-go v0.0.0-20200815184336-b225d28383f2 => v0.0.0-20210405044454-10bc19881ad6
# (...)

我也尝试过找到类似的问题,比如这个或另一个,但还没有找到防止go get命令更改go.mod的替代方案。

我目前用来阻止这种行为的解决方法是在某些go get …步骤之后立即执行git checkout -- go.mod,以重置go get所做的任何更改,从而避免破坏具有某些依赖关系的更改(更新版本(。

我使用的是go版本1.16.3

对于Go 1.16及更高版本,您可以使用go install安装二进制文件,而不会影响go.mod

go install github.com/AsynkronIT/protoactor-go/protobuf/protoc-gen-gograin

相关内容

  • 没有找到相关文章

最新更新