首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行获取多个Git远程对象

并行获取多个Git远程对象
EN

Stack Overflow用户
提问于 2018-08-30 20:02:24
回答 2查看 242关注 0票数 4

在git中,可以并行获取多个远程对象吗?

下面的代码可以在不与存储库中的git文件锁定冲突的情况下工作吗?

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2018-08-31 03:24:13

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

xargs --

-n =4 xargs 1 git远程获取

正如您所看到的,在一定程度上,这在测试时实际上是有效的。我曾经写过一个类似的东西的奇特版本(用奇特的显示控制抓取过程,都是用Python编写的--结果发现git fetch --progress中有一个bug,所以它不能正确地处理管道;你必须使用pty)。

在不与

文件锁定冲突的情况下...当所有存储库彼此不相关时,它似乎可以工作。

这就是问题所在:每次fetch都假设它可以获得它的锁。获取需要锁定每个远程跟踪名称,通常这很好用,因为名称是分开的-远程A不会干扰远程B,因为refs/remotes/A/masterrefs/remotes/B/master使用不同的锁-但最终的重新打包可能会失败,除非您按照您所做的那样,禁用自动gc,然后自己运行GC (以后也应该重新启用它)。

您最终可能会获取更多不必要的数据(正如我在另一个答案中指出的)。在没有外部信息的情况下,你对此无能为力,例如,也许有一个遥控器总是你应该首先获取的。

票数 1
EN

Stack Overflow用户

发布于 2022-01-20 04:49:33

它似乎对我来说开箱即用

代码语言:javascript
复制
git fetch -j 8   

使用Git 2.33.1。-j开关是--jobs的缩写。我记得早些时候我在寻找这个,但直到今天才发现,开关可能是相当新的。

具有四个GitHub遥控器的存储库的一些计时:

代码语言:javascript
复制
$ \time git fetch --all
Fetching origin
Fetching foo
Fetching bar
Fetching baz
        6.40 real         1.28 user         0.21 sys
$ \time git fetch --all -j 8
Fetching origin
Fetching foo
Fetching bar
Fetching baz
        2.06 real         1.30 user         0.16 sys
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52096609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档