转到mod供应商,而不更新到最新

时间:2019-04-02 04:42:32

标签: go go-modules

我正在尝试确定是否有可能在不使用go工具更新go.mod文件的情况下运行go mod供应商。

我专门go get package/subpackage@commit并用正确的版本提交go.mod

然后我运行go mod vendor,它会自动更改我刚刚设置的软件包的版本。

我无济于此:https://github.com/golang/go/wiki/Modules#how-do-i-use-vendoring-with-modules-is-vendoring-going-away

我需要使用供应商,因为我运行的脚本可以编辑某些供应商的部门。我正在查看以下构建流程:

GO111MODULE=on go get package/subpackge@commit
GO111MODULE=on go mod vendor
./Script/patch_vendors.sh --write
GO111MODULE=off go build

我的另一种选择是修改复制的源代码,无论供应商将其下载到何处,但是 不知道该如何处理。

预先感谢

1 个答案:

答案 0 :(得分:1)

https://tip.golang.org/cmd/go/#hdr-Maintaining_module_requirements

  

go命令本身会自动更新go.mod文件,以保持标准格式和require语句的准确性。

     

任何发现不熟悉的导入的go命令将查找包含该导入的模块,并将该模块的最新版本自动添加到go.mod中。 […]

     

任何go命令都可以确定缺少模块要求,因此必须添加[…]。

go mod vendor命令会复制所有软件包及其测试的传递导入,因此它将自动更新go.mod文件以确保所有导入的软件包都存在。

因此,这里的问题很可能是您为commit选择的package/subpackage无法提供某些出现在程序的可移植导入中的程序包。如果正确,您应该发现go list allgo test allgo mod tidy都对模块的要求进行了相同的编辑。