我正在将 svn 存储库迁移到 git (gerrit),并且遇到了有关迁移大型存储库的问题。我使用 svn2git。
致命:格式错误的索引信息 10
错误:git-svn 死于信号 11
xxxxxx@svn2git-import:~$ Connection reset by XX.XXX.XX.XX
我在设置为 100000 的 svn2git 中添加了 --log-window-sized。
感谢您的提前帮助!
我通过在日志窗口大小中添加另一个 0 解决了这个问题。傻我。
只需编辑 svn2git -> /var/lib/gems/2.3.0/gems/svn2git-2.4.0/lib/svn2git/migration.rb
添加
--log--window-size 9999999999999
在
git svn 获取
解决了我的问题!
因为一次性迁移git-svn
不是转换存储库或部分存储库的正确工具。如果您想使用 Git 作为现有 SVN 服务器的前端,这是一个很棒的工具,但对于一次性转换,您不应该使用,但它更适合这个用例。git-svn
svn2git
有很多称为svn2git
的工具,可能最好的是来自https://github.com/svn-all-fast-export/svn2git的 KDE 工具。我强烈建议使用该svn2git
工具。这是我所知道的最好的,并且在你可以用它的规则文件做什么方面非常灵活。
您使用的svn2git
工具(可能是 nirvdrums)基于git-svn
并因此具有大多数相同的缺点,只是解决了其中的一些问题。
您将能够轻松配置svn2git
s 规则文件以从当前 SVN 布局中生成所需的结果,包括可能存在的任何复杂历史,包括从一个 SVN 存储库中生成多个 Git 存储库或将不同的 SVN 存储库合并到一个 Git 中如果您愿意,可以一次性干净地回购。
如果您不是 100% 了解存储库的历史,那么在将 SVN 存储库迁移到 Git 时,svneverever
http ://blog.hartwork.org/ ?p=763是一个调查 SVN 存储库历史的好工具。
尽管git-svn
nirvdrumsvn2git
更容易上手,但除了灵活性之外,还有一些使用 KDEsvn2git
而不是更优越的原因:git-svn
svn2git
对于具有分支和合并等的更复杂的历史尤其如此git-svn
一个额外的空提交,这也使它们不是分支的一部分,因此在fetch
您提供命令之前,正常情况下不会获取它们,--tags
因为默认情况下也只会获取指向已获取分支的标签。使用正确的 svn2git 标签是它们所属的地方svn2git
,git-svn
最终您将失去历史svn2git
将一个 SVN 存储库拆分为多个 Git 存储库svn2git
正确的转换比使用正确的要快无数倍git-svn
你看,有很多原因导致git-svn
KDE 更差而 KDEsvn2git
更胜一筹。:-)