Git 子模块在 Windows 上似乎非常慢。
为了测试性能,我创建了 3 个裸存储库并向它们提交了 3 个独立消息(未存储文件)。然后,我将这些裸存储库中的每一个作为子模块添加到新的 git 存储库中,并执行子模块更新,这花费了 5 秒多的时间。
当使用 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.23
- 在常规 CMD 中
- 用 simplified PATH set in that CMD
然后查看问题是否仍然存在。
与 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/