登录
首页 >  Golang >  Go问答

Go 1.18中的 go.work.sum文件用于追踪什么?

来源:stackoverflow

时间:2024-03-18 09:54:30 220浏览 收藏

Go 1.18 中的 go.work.sum 文件用于追踪工作区模块中 go.sum 文件所缺少的模块校验和。当工作区 go.mod 文件不完整,或两个项目间接依赖于某个模块时,go 命令会将缺失的校验和添加到 go.work.sum 文件中,以验证依赖模块。

问题内容

我刚刚在现有项目上尝试了 go 1.18 工作区。考虑以下项目目录结构:

project-root/
|-- app/
|  |-- go.mod
|  |-- go.sum

根据文档,我在项目的根目录中运行了命令 go work init ./app 。此命令按预期创建了 go.work 文件,但也创建了非预期的 go.work.sum 文件。

令人困惑的是,go.work.sum 引用了两个可以在 go.sum 中找到的模块,但在 go.sumgo.work.sum 之间进行比较时,每个模块的版本并不相同。那么还有一个问题,为什么go.work.sum中只引用了这两个模块,而其他模块却没有引用?请注意,工作区中只有一个模块。

go.work.sum 文件跟踪什么?它在任何地方都有记录吗?


正确答案


相关功能提案中提到了 go.work.sum 文件(似乎没有其他地方?):

https://go.googlesource.com/proposal/+/master/design/45713-workspace.md#files

go 命令将使用工作区模块中存在的 go.sum 文件集合来验证依赖模块,但在某些情况下,工作区模块中的 go.sum 文件并不包含验证所需的所有总和构建:更简单的情况是,如果工作区 go.mod 文件本身不完整,go 命令会将缺失的总和添加到工作区的 go.work.sum 文件中,而不是添加到模块的 go.sum 中。强>

该提案(与上面的链接相同)还描述了另一种用例,其中两个项目都不从模块的某个特定版本导入包,而是将其作为间接依赖项,从而缺少模块代码的校验和。

所以你的子模块可能会显示这些情况之一。如果是前者,我希望在子模块上运行 go mod tidy 使所有内容同步并消除对 go.work.sum 的需要。根据您的描述,听起来像是后者,那么需要 go.work.sum 来跟踪丢失的校验和。

本篇关于《Go 1.18中的 go.work.sum文件用于追踪什么?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>