目前,我们在 src/vendor 中拥有所有 vendor 库,这使得 docker-compose 构建速度相当快。尽管将 vendor 库添加到源代码管理具有库未更新的缺点,并且还会严重污染拉取请求的差异。
是否有介于两者之间的方法,例如缓存?
最佳答案
Is there a way in between, maybe with caching?
是的,有几个。但不要对抗系统/首选方法。
像您已经在做的那样使用$GOPATH/src/MyProject/vendor
。
adding vendored libraries to source control has the disavantage of libraries not being updated...
这一切都取决于您的团队对存储库的管理。如果每个人都忽视 vendor ,那么它就会变得陈旧。
就我个人而言,我将其作为“每月第一天”的习惯,检查并刷新所有依赖项,运行我们的测试套件,如果没有错误,则更新开发服务器上的 QA 集成测试,并密切关注之后的错误日志发布。像 godep
和 gostatus
这样的工具极大地帮助您的 GOPATH 保持最新状态,您可以使用它们快速更新您的 vendor 文件夹。
只需确保它是专用提交,以便在出现问题时可以快速恢复。
also heavily polluting the diff of pull requests
首先,这只是一个流程任务。我对所有拉取请求强制执行 rebase ,并拒绝所有存储库中的所有合并。这会保留非常干净的 git 历史记录;但是,更重要的是, rebase 会将本地提交移动到 vendor 更新之后。除非有人添加相同的包,否则永远不会发生冲突。这很容易,只需获取最新的即可完成。
听起来似乎还有流程问题需要解决,而不是担心/vendor 管理。
关于go - 使用 Docker 快速构建项目,无需 checkin vendor 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295127/