为什么 git svn 显示-忽略/显示-外部如此慢



我正在编写一个通用的 svn -> git 迁移脚本,它允许比标准git svn clone更多,在我的脚本的一个阶段,我正在检查迁移存储库中每个分支的 git svn show-externalsgit svn show-ignore 的输出,并根据这些命令的输出采取各种步骤。

我现在的问题是,虽然脚本的其余部分运行得非常快,但这两个命令似乎占据了我绝大多数的运行时间。在某些情况下,git svn show-externals 需要 10 分钟以上的时间才能运行(在包含大约 5000 个文件的存储库上(。当在具有 10 个或更多分支的这种大小的存储库上运行时,您可以想象这加起来相当大。

为什么此操作需要这么长时间才能执行?我能做些什么来加快它的执行速度吗?

"git svn show-ignore"为每个目录执行额外的SVN请求。

出于迁移目的,也许您想查看SubGit工具。它为每个修订版翻译 svn:ignore -> .gitignore (并且它还翻译 svn:eol 样式、标签等(。唯一的限制:它需要本地访问SVN到存储库。因此,它可以与svnrdump工具结合使用。如果在本地有 SVN 后置,则迁移将分一步执行:

$ subgit install path/to/svn/repo

最新更新