git - 并行获取多个 Git 遥控器
问题描述
在 git 中,是否可以并行获取多个遥控器?
下面的工作是否会与存储库中的 git 文件锁定冲突。
git config gc.auto 0
git remote |xargs --max-procs=4 -n 1 git fetch
git gc
我对几个存储库进行了小测试,当所有存储库彼此无关时,它似乎可以工作。
如果有明确的技术原因导致上述并行获取命令不起作用,那么获得反馈会很好。
子模块支持并行获取,但在使用 git-subtree 方法时并行获取会很好。
解决方案
答案其实是也许。尤其是:
git remote | xargs --max-procs=4 -n 1 git fetch
正如您所看到的,在一定程度上,这在测试时实际上是有效的。我曾经写过一个相同类型的东西的精美版本(带有对获取过程的精美显示控制,全部用 Python 编写 - 但事实证明,在 中存在一个错误git fetch --progress
,因此这不适用于管道;你必须使用 ptys)。
不与 git 文件锁定冲突......当所有存储库彼此无关时,它似乎工作。
这就是问题所在:每次 fetch 都假设它可以得到它的锁。提取需要锁定每个远程跟踪名称,并且通常工作得很好,因为名称是分开的 - 远程A
不会干扰远程B
,因为refs/remotes/A/master
并refs/remotes/B/master
使用不同的锁 - 但最终重新打包可能会失败,除非你做你所做的,禁用自动-gc
然后自己运行 GC(你也应该在之后重新启用它)。
您最终可能还会获取比必要更多的数据(正如我在另一个答案中指出的那样)。如果没有外部信息,您对此无能为力,例如,也许您应该始终首先获取一个遥控器。
推荐阅读
- android - 在 BillingProcessor.purchase 后应用计费不显示弹出消息
- vb6 - 为什么在 sub vb6 上传递参数时我检索错误?
- laravel - 使用 JSON.stringify 传递单个数据时进行验证
- mysql - 将 SUM 添加到 SQL 查询使其持续 7 分钟而不是 3 秒
- python - 如何在 Keras Python 中使用 TF IDF 矢量化器和 LSTM
- java - 如何使用spring data jpa调用数据库函数?
- react-apollo - 阿波罗升压默认状态
- html - HTML表格宽度问题
- aem - 获取父节点吊索模型中的基础组件属性
- c# - Autofac:如何传递构造函数参数以将实例注册为组件