为什么git svn show-ignore / show-externals这么慢?

时间:2012-05-21 14:40:10

标签: git svn git-svn svn-externals svnignore

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

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

为什么这个操作需要这么长时间才能执行?有什么办法可以加快它的执行速度吗?

1 个答案:

答案 0 :(得分:4)

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

出于迁移目的,您可能希望查看SubGit工具。它翻译了svn:ignore - > .gitignore用于每个版本(并且它还翻译svn:eol-style,标签等)。唯一的限制:它需要本地访问SVN到存储库。因此它可以与svnrdump工具结合使用。如果您在本地拥有SVN repostiory,则只需一步即可执行迁移:

$ subgit install path/to/svn/repo