我正在使用git,我有一个包含大约40(!)子模块回购的回购。
每当我执行git git push origin master
时,remote: Processing changes
行动的速度都很慢。
有什么方法可以加快推动速度吗? Gerrit被用作后端,但我正在覆盖HEAD:refs / for / master以使审查机制短路。
PS。我知道我有很多子回购,这可能不是最佳的,但事实就是这样,问题不在于此: - )
答案 0 :(得分:2)
确定发现了问题:
顶级回购正在跟踪主分支。这意味着当我在每个子仓库中推送到原点时,顶部仓库会自动更新(在Gerrit中)。
我没有理解这一点,所以我也推动了顶级回购,这导致了很长的处理时间。
不知道为什么。
答案 1 :(得分:2)
有什么方法可以加速推动吗?
使用下一个git 2.12.0(2017年第一季度),该过程(测试是否需要推送子模块)将更快。
commit 250ab24,见commit 5b6607d,commit 9cfa1c2,commit 1473944,Heiko Voigt (hvoigt
)(2016年11月16日)。
(Junio C Hamano -- gitster
--在2016年12月16日commit af952da合并)
序列化已更改子模块的集合
要检查是否需要推送子模块,我们需要收集所有子模块 改变了子模块。让我们先收集它们然后执行 可能是昂贵的测试是否已推出某些修订 每个子模块只有一次。
由于我们可以组装一个,因此还有进一步的优化潜力 命令并且只发出一个而不是每个远程引用的一个调用 子模块。