Windows 上的 Git 子模块更新缓慢

标签 git git-submodules

Git 子模块在 Windows 上似乎非常慢。

为了测试性能,我创建了 3 个裸存储库并向它们提交了 3 个独立消息(未存储文件)。然后,我将这些裸存储库中的每一个作为子模块添加到新的 git 存储库中,并执行子模块更新,这花费了 5 秒多的时间。

git submodule update capture

当使用 20 多个子模块时,这似乎过多且非常明显。 是什么导致它需要这么长时间?

示例文件:https://drive.google.com/file/d/1n6fAm16tXtt_1YvXbPHhn150iuw-VGOk/view

在“子模块测试”中运行“git submodule update”。 测试中的所有子模块 URL 都是相对的。

运行 Git 版本 2.22.0.windows.1 和版本 2.23.0.windows.1

编辑:
使用常规命令行、git bash(如图所示)、PowerShell 和 TortoiseGit 进行测试。

按照 VonC 的建议使用简化的 PATH 进行测试。

最佳答案

同样的尝试:

然后查看问题是否仍然存在。

Git 2.22 (and improved in 2.23) ,您可以使用以下方法衡量 Git 命令的性能:

cmd /V /C "set GIT_TRACE2_PERF=C:/Users/me/log.perf&& git submodule update"
or in bash session: 
GIT_TRACE2_PERF=C:/Users/me/log.perf git submodule update 

关于Windows 上的 Git 子模块更新缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57795214/

相关文章:

git - 在父 git 存储库中创建多个 git 子存储库

git - 如何修复git中的 "modified content, untracked content"?

从接收后 Hook 更新 Git 子模块

windows - 如何在Windows平台上编写Git Server Hooks?

git - 测试不同客户端和服务器版本的最佳 Git 策略

git - 如何编写外部 git diff 来比较添加的行和删除的行(并 stash 匹配项)?

git - 没有 Remote 的嵌套 git 存储库(也称为没有 Remote 的 git 子模块)

git - git 子模块名称是否用于显示以外的任何用途?

git - 在其基础分支基于主分支后如何重新定位分支

Python pickle : ImportError: No module named __main__