设置:
- 我们的项目正在使用
golang 1.12.14 - 我们正在使用
go build -mod=vendor
问题:当新的依赖项添加到go.mod供应商文件夹时,没有更新,人们正在提交代码并忘记运行go mod vendor以更新文件夹。我的理解是,由于-mod=vendor指定使用vendor文件夹中的包,因此该go.mod文件与我们在构建项目时实际使用的文件存在差异。
问题:应该go mod vendor添加到预提交挂钩吗?
设置:
golang 1.12.14 go build -mod=vendor问题:当新的依赖项添加到go.mod供应商文件夹时,没有更新,人们正在提交代码并忘记运行go mod vendor以更新文件夹。我的理解是,由于-mod=vendor指定使用vendor文件夹中的包,因此该go.mod文件与我们在构建项目时实际使用的文件存在差异。
问题:应该go mod vendor添加到预提交挂钩吗?
从 Go 1.14 开始,只要使用目录,该go命令就会自动检查vendor目录和go.mod文件之间的一致性vendor。此外,vendor如果模块指定go 1.14或更高,它默认使用目录(参见https://tip.golang.org/doc/go1.14#go-command)。
截至今天,Go 工具链受支持的最旧版本是 Go 1.15.13。
因此,如果您升级到受支持的 Go 工具链版本,则不需要go mod vendor作为预提交挂钩运行。每当使用目录时,go命令本身都会标记不一致。vendor