如何将大型SVN存储库转换为Git?

时间:2019-04-10 14:19:28

标签: git perl svn git-svn

我正在尝试将多个SVN存储库转换为Git。两个进展顺利。当我尝试转换下一个较大的那个时,我从git svn clone中收到错误。首先是一堆:

W: Refspec glob conflict (ref: refs/remotes/origin/tags/Something-Perl):
expected path: something/trunk/tags/Something-Perl
    real path: something/tags/Something-Perl

用于各种“东西”。然后一个:

Initializing parent: refs/remotes/origin/TheName@27584
Use of uninitialized value $args[1] in join or string at /usr/share/perl5/vendor_perl/Git.pm line 1635.
Use of uninitialized value $_[2] in exec at /usr/share/perl5/vendor_perl/Git.pm line 1661.
fatal: Not a valid object name
ls-tree -z  ./: command returned error: 128

挖掘,我发现第1635行是

return wantarray ? ($fh, join(' ', $cmd, @args)) : $fh;

Google在Git.pmSVN.pm中发现了一些错误实例,但没有一个。 (作为参考,我在Linux上使用git版本2.19.1。)

我真的只想要该存储库中的两个目录,所以我尝试遵循Migrating a large SVN repo to git,但最终得到一个空的Git存储库:

[MyNewRepo]$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果仅导出到git,则最好使用KDE svn2git。它更快,并且允许您创建带注释的标签。 https://github.com/svn-all-fast-export/svn2git