设置:
- 我们的项目正在使用
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