并行获取多个Git遥控器

问题描述 投票:3回答:1

在git中,是否可以并行获取多个遥控器?

下面的工作是否会与存储库中的git文件锁定冲突。

git config gc.auto 0
git remote |xargs --max-procs=4 -n 1 git fetch
git gc

我对几个存储库进行了小测试,当所有存储库彼此无关时,它似乎有效。

如果有明确的技术原因上面的并行获取命令不起作用,那么获得反馈会很好。

子模块支持并行获取,但是当使用git-subtree方法时,并行获取会很好。

类似的问题:git pull multiple remotes in parallel

git
1个回答
1
投票

答案实际上可能是。特别是:

git remote | xargs --max-procs=4 -n 1 git fetch

正如您所见,这实际上在经过测试时可以正常工作。我曾经写过一个同样类型的花哨版本(对获取过程的花哨显示控制,都是用Python编写的 - 但事实证明git fetch --progress中有一个错误,所以这对管道不起作用;你必须使用ptys)。

没有与git文件锁定冲突...它似乎在所有存储库彼此无关时起作用。

这就是问题:每次获取都假定它可以获得锁定。提取需要锁定每个远程跟踪名称,通常这很好,因为名称是单独的 - 远程A不会干扰远程B因为refs/remotes/A/masterrefs/remotes/B/master使用不同的锁 - 但最终的重新包装可能会失败,除非你做你做的事情做了,禁用auto-gc然后自己运行GC(之后你也应该重新渲染它)。

您最终可能会获取超出必要的数据(正如我在另一个答案中所述)。没有外部信息,你可以做很多事情,例如,也许你应该首先获取一个遥控器。

© www.soinside.com 2019 - 2024. All rights reserved.