为什么 go 模块版本有时需要 go.sum 中的 2 行

Zub*_*bin 7 go go-modules

为什么个别模块版本有时需要 2 行go.sum

  • 一行仅用于模块版本(v0.1.1在下面的示例中)
  • 一行还添加/go.mod到版本上(v0.1.1/go/mod在下面的示例中)。

例如:

github.com/foo/bar v0.1.1 h1:kDgnGXZpvZUi7ym6Rm23yVn3gRqBag+vU6M/wytZR9c=
github.com/foo/bar v0.1.1/go.mod h1:MZcarCLffCxoj/EF1yhRb4HvOSmCkm5Z8FPmzWrMG+g=
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为有时当我go get打包时,仅使用上面示例中的第二行就会生成间接依赖项,然后该 package@version 的go.sum构建将失败。410 gone但是,如果我手动go get间接依赖,构建将不再失败并显示410 gone.

我相信这只发生在私有存储库中,所以我知道它不能与 sum.golang.org 很好地配合。然而,我想弄清楚是否可以首先避免获得 410,特别是在自动模块更新等方面。

bcm*_*lls 4

该条目包含隔离文件v0.1.1/go.mod的校验和。go.mod这是为了确保每次加载或更改依赖项时的一致性所必需的。

v0.1.1条目(不带后缀)包含模块完整源代码的校验和,包括其中包的/go.mod所有源文件。.go

这两部分是单独下载的,因此您不需要下载您不打算构建或测试的依赖项的完整源代码(对于具有临时贡献者的项目来说这是相当常见的情况)。但由于该go命令单独下载它们,因此需要单独的校验和。