带有Go Get的Pin版本

vhipe2zx  于 2023-11-14  发布在  Go
关注(0)|答案(2)|浏览(120)

我想固定一个软件包的版本,所以每当我运行

  1. go get -u ./...

字符串
..这个包将保持不变(但其余的正常刷新)。

klh5stk1

klh5stk11#

使用go modules。它是专门设计来处理精确的版本控制。
在你的软件包的go.mod中,你可以将任何依赖项固定到一个固定的版本,例如。

  1. module example.com/hello
  2. go 1.12
  3. require (
  4. golang.org/x/text v0.3.0 // indirect
  5. rsc.io/quote v1.5.2
  6. rsc.io/quote/v3 v3.0.0
  7. rsc.io/sampler v1.3.1 // indirect
  8. )

字符串
您可以更新单个软件包版本,例如:

  1. go get rsc.io/quote/v3@master


将拉取最新的提交版本(甚至超过任何semver标记的版本)。您也可以手动编辑go.mod以获得额外的精度。
P.S.你需要go 1.11或更高版本的go模块。go 1.13默认打开模块。早期版本你必须通过env var GO111MODULE=ON显式启用它。

展开查看全部
ix0qys7i

ix0qys7i2#

如果你想为一个特定的Go包固定特定的版本,那么可以通过replace指令来完成。例如,下面的go.mod配置将golang.org/x/exp固定到v0.0.0-20230713183714-613f0c0eb8a1,所以go get -u -d ./...不会将这个包更新到新版本:

  1. module github.com/myname/mymodule
  2. replace golang.org/x/exp => golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1
  3. require (
  4. ...
  5. // This version is updated with go get -u -d ./..., but it is always
  6. // overridden by the version specified in the replace directive above
  7. golang.org/x/exp v0.0.0-20231006140011-7918f672742d
  8. ...
  9. )

字符串

相关问题