git svn 需要永远,svn 需要一个小时
git svn takes forever, svn takes an hour
我有在大型项目中使用svn。我可以毫无问题地检查项目的主干。需要 30 分钟/1 小时。我是这样做的:
svn checkout https://myrepo.com:port/svn/trunk/
但如果我尝试使用 git,它需要很长时间。在结帐时出现错误后,我已经做了 git svn fetch
两天了,因为我阅读了类似问题的一些答案,但什么也没有。我使用的命令是
git svn clone https://myrepo.com:port/svn/trunk/
问题(我认为)是 git 试图克隆 一切(所有分支)加上我不想要的其他东西。在目录 svn 上,有 trunk 和 branches,还有其他我不需要的目录。我只想要后备箱。
这是正常行为吗?
使用您的命令,它只会克隆主干,因为您指定了主干 URL。但是它仍然通过一个接一个地获取所有修订然后从中进行 Git 提交来克隆其整个历史。这需要很长时间,特别是如果您不在 SVN 存储库位于文件系统上的服务器上执行此操作。这是我不鼓励使用基于 git-svn
或 git-svn
的工具进行 one-time 迁移的众多原因之一。
您可以将 --revision
参数用于 git svn clone
以仅导入部分历史记录,例如。 G。最后 10 次提交。
git svn clone
运行速度慢得多,主要是因为它克隆到 non-bare 存储库中。您可以使用 bare 存储库显着提高克隆速度。
注意:记得为迁移生成作者文件。
这些额外的步骤将加快 svn → git 迁移的过程:
git svn clone https://myrepo.com:port/svn/ --stdlayout <deleteMe.git>
带有所有额外参数,例如 --ignore-paths
等等。
- 然后取消步骤1中的
git svn clone
操作,只是为了后面使用.git/config
文件
git init --bare <useMeBare.git>
- 将
<useMeBare.git>/config
替换为<deleteMe.git>.git/config
。
- 编辑
<useMeBare.git>/config
更改bare = false
→bare = true
cd <useMeBare.git>
- 现在,运行
git svn fetch
并注意速度的提高。
- 获取完成后,您可以通过运行ning
git clone <useMeBare.git> <migrated.git>
检查文件内容
- 您还可以将新的 git 远程添加到
<useMeBare.git>
并将其推送到本地 GitLab 服务器项目 / GitHub.
- 如果您稍后想重命名迁移的分支/标签,这个 link 可能会有帮助。
注意:要获得尽可能好的 git svn clone / fetch
速度,请在本地复制 svn 存储库并对其进行 svnserve,然后从中 git svn clone
。但是这个方法需要你使用这个参数--rewrite-root
所以你克隆的git 仓库在评论中保持原来的svn URL
希望这对您有所帮助。
我有在大型项目中使用svn。我可以毫无问题地检查项目的主干。需要 30 分钟/1 小时。我是这样做的:
svn checkout https://myrepo.com:port/svn/trunk/
但如果我尝试使用 git,它需要很长时间。在结帐时出现错误后,我已经做了 git svn fetch
两天了,因为我阅读了类似问题的一些答案,但什么也没有。我使用的命令是
git svn clone https://myrepo.com:port/svn/trunk/
问题(我认为)是 git 试图克隆 一切(所有分支)加上我不想要的其他东西。在目录 svn 上,有 trunk 和 branches,还有其他我不需要的目录。我只想要后备箱。
这是正常行为吗?
使用您的命令,它只会克隆主干,因为您指定了主干 URL。但是它仍然通过一个接一个地获取所有修订然后从中进行 Git 提交来克隆其整个历史。这需要很长时间,特别是如果您不在 SVN 存储库位于文件系统上的服务器上执行此操作。这是我不鼓励使用基于 git-svn
或 git-svn
的工具进行 one-time 迁移的众多原因之一。
您可以将 --revision
参数用于 git svn clone
以仅导入部分历史记录,例如。 G。最后 10 次提交。
git svn clone
运行速度慢得多,主要是因为它克隆到 non-bare 存储库中。您可以使用 bare 存储库显着提高克隆速度。
注意:记得为迁移生成作者文件。
这些额外的步骤将加快 svn → git 迁移的过程:
git svn clone https://myrepo.com:port/svn/ --stdlayout <deleteMe.git>
带有所有额外参数,例如--ignore-paths
等等。- 然后取消步骤1中的
git svn clone
操作,只是为了后面使用.git/config
文件 git init --bare <useMeBare.git>
- 将
<useMeBare.git>/config
替换为<deleteMe.git>.git/config
。 - 编辑
<useMeBare.git>/config
更改bare = false
→bare = true
cd <useMeBare.git>
- 现在,运行
git svn fetch
并注意速度的提高。 - 获取完成后,您可以通过运行ning
git clone <useMeBare.git> <migrated.git>
检查文件内容
- 您还可以将新的 git 远程添加到
<useMeBare.git>
并将其推送到本地 GitLab 服务器项目 / GitHub. - 如果您稍后想重命名迁移的分支/标签,这个 link 可能会有帮助。
注意:要获得尽可能好的 git svn clone / fetch
速度,请在本地复制 svn 存储库并对其进行 svnserve,然后从中 git svn clone
。但是这个方法需要你使用这个参数--rewrite-root
所以你克隆的git 仓库在评论中保持原来的svn URL
希望这对您有所帮助。