git svn clone失败,出现"错误:git-svn死于信号11"

dan*_* sp 6 git git-svn

我正在尝试使用Ubuntu 16.4机器将我庞大的SVN存储库移动到Git中.为此,我遵循本教程:

https://www.atlassian.com/git/tutorials/svn-to-git-prepping-your-team-migration

我安装了最新的Git,SVN和git-svn工具.

我的问题是,每次我敲响'git svn clone'命令我都会收到此错误'错误:git-svn死于信号11'而没有任何进一步的信息.

在这个论坛中搜索了一下我找到了另一篇文章:

git svn clone死于cygwin下的11号信号

这带我到这个网站寻求解决方案:

http://pwizardry.com/devlog/index.cgi/2010/03/29#svn2git

要求使用'git svn fetch'恢复进程.我这样做了,它似乎工作了,因为这个过程持续了一天.不幸的是,它再次停止了相同的错误,'git svn fetch'似乎没有任何帮助.

我想知道是否有人遇到过这个问题,或者我怎么能找到任何痕迹,因为我得到的只是这个错误而没有任何进一步的解释.

编辑:

所以我继续搜索这个问题,我发现如果使用'valgrind'你可以获得更多的信息,所以我做了,现在'git svn fetch'在另一个点停止了这条消息:

==17006== Warning: invalid file descriptor -1 in syscall close()
==17006== 
==17006== HEAP SUMMARY:
==17006==     in use at exit: 43,779,830 bytes in 71,103 blocks
==17006==   total heap usage: 7,178,701 allocs, 7,107,598 frees, 2,123,468,574 bytes allocated
==17006== 
==17006== LEAK SUMMARY:
==17006==    definitely lost: 156,556 bytes in 40 blocks
==17006==    indirectly lost: 156,338 bytes in 51 blocks
==17006==      possibly lost: 43,394,719 bytes in 70,805 blocks
==17006==    still reachable: 72,217 bytes in 207 blocks
==17006==                       of which reachable via heuristic:
==17006==                         newarray           : 53,032 bytes in 1,637 blocks
==17006==         suppressed: 0 bytes in 0 blocks
==17006== Rerun with --leak-check=full to see details of leaked memory
==17006== 
==17006== For counts of detected and suppressed errors, rerun with: -v
==17006== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
Run Code Online (Sandbox Code Playgroud)

知道这是什么意思吗?

编辑2:

我现在看到运行我正常的'git svn fetch'表示一切都已完成......我不知道'valgrind'的使用是如何影响的,但似乎它有助于完成这项工作.

小智 13

这个问题在libsvn-perl 1.9.4.

libsvn-perl的

bugs.debian.org

  • 以防有人遇到与我相同的问题(非常非常大的存储库,ubuntu xenial):继续进行获取,直到它获得所有的repo.不要介意信号11.只需继续抓取. (3认同)
  • 在xenial中,您可以使用ppa存储库来安装更新的libsvn-perl,请检查:https://launchpad.net/~dominik-stadler/+archive/ubuntu/subversion-1.9 (2认同)

Vam*_*ire 3

git-svn不是用于一次性转换存储库或存储库部分的正确工具。如果您想使用 Git 作为现有 SVN 服务器的前端,那么它是一个很棒的工具,但对于一次性转换,您不应该使用git-svnsvn2git它更适合此用例。

有很多名为 的工具,最好的可能是来自https://github.com/svn-all-fast-export/svn2gitsvn2git的 KDE 工具。我强烈建议使用该工具。这是我所知道的最好的,并且它的规则文件非常灵活。svn2git

您将能够轻松配置svn2git规则文件以产生您想要的结果。

如果您不是 100% 了解存储库的历史记录,svnevereverhttp ://blog.hartwork.org/?p =763 是一个很好的工具,可以在将 SVN 存储库迁移到 Git 时调查其历史记录。


尽管git-svn更容易上手,但除了其灵活性之外,还有以下一些进一步的原因说明为什么使用 KDE 更优越svn2gitgit-svn

  • 历史记录被重建得更好、更干净svn2git(如果使用了正确的历史记录),对于具有分支和合并等的更复杂的历史记录尤其如此
  • 标签是真正的标签,而不是 Git 中的分支
  • 标签包含git-svn一个额外的空提交,这也使得它们不属于分支的一部分,因此在您向命令fetch提供之前,普通不会获取它们,因为默认情况下,也只获取指向所获取分支的标签。--tags有了正确的 svn2git 标签,它们就在它们所属的地方
  • 如果您更改了 SVN 中的布局,您可以使用 轻松配置它svn2gitgit-svn最终您将丢失历史记录
  • 您还svn2git可以轻松地将一个 SVN 存储库拆分为多个 Git 存储库
  • 或者轻松地将同一 SVN 根目录中的多个 SVN 存储库合并到一个 Git 存储库中
  • svn2git使用正确的转换比使用正确的转换快数亿倍git-svn

你看,有很多原因可以解释为什么 KDEgit-svn更差而 KDEsvn2git更优越。:-)