Git SVN克隆出错

时间:2014-08-17 20:24:23

标签: git svn

我正在将几个项目从SVN迁移到Git,我正在使用Git' svn clone'特征。我正在尝试运行以下内容:

git svn clone --stdlayout --authors-file=authors.txt <path-to-svn-project> <local-git-repo-name>

我已经能够克隆几个较小的项目,但是当我尝试克隆一个更大的项目时,会出现以下错误:

couldn't truncate file at /usr/lib/perl5/site_perl/Git.pm line 1322.

Error removing .git/Git_04wYzV at /usr/lib/perl5/5.8.8/File/Temp.pm line 890.

我认为它可能会在谷歌搜索中找到快速解决方案,但这看起来是一个不常见的错误。有没有人知道我怎么能超越这个?

我的版本很新,我试图在Windows 8.1上运行它:

Git: using version 1.9.4.msysgit.0
Subversion: using version 1.8.9
git-svn: using version 1.9.4.msysgit.0

6 个答案:

答案 0 :(得分:2)

以管理员身份调用git svn fetch对我有用。它可能会访问(并尝试编辑/删除)某些需要管理员权限的文件。

答案 1 :(得分:2)

运行git --version并确保您使用的是2.4+版本。我现在找不到链接,但是回到2.2.x之前,Git SVN代码中存在一个错误,它会导致它在各个点通过大型存储库迁移失败。我最终在IRC上与Git开发人员合作,并使用某人发布到Git邮件列表的补丁,并使其正常运行。不过,该补丁已经合并并发布。确保您拥有最近的Git和最近的SVN。您也可以通过在目录中运行git svn clone来恢复git svn fetch。此外,--verbose有助于查看有关错误的更多背景信息。

答案 2 :(得分:0)

我在msysgit 1.9.4中遇到了完全相同的问题 尝试使用v1.8.3:我克隆了所有我的SVN存储库而没有错误。

答案 3 :(得分:0)

当svn存储库太大时,我遇到了同样的问题。我能够使用SmartGit应用程序来处理它。

http://www.syntevo.com/smartgit/svn-tour 有30天的免费试用。

如果您不需要所有历史记录,解决此问题的另一种方法是从修订版导入。

git svn clone -r12345:HEAD  --stdlayout --authors-file=authors.txt <path-to-svn-project> <local-git-repo-name>

最后你可以尝试这个命令(设置缓冲区大小):

git config http.postBuffer 524288000

答案 4 :(得分:0)

不知道这是否是您的问题,但是在进行大型svn存储库操作时,我遇到了相同的错误git svn clone / git svn fetch。有时它会抱怨couldn't truncate file,有时会抱怨打开的文件太多,但是其中一个可靠地以合理的方式进入了进程,通常会在一个特别大的修订版本中死掉(最初,重试获取)工作,但最终它将可靠地死于相同的巨大修订)。

要修复后者,我运行了ulimit -n 4096ulimit -n报告了对我的默认限制1024),将打开文件句柄的限制增加了四倍。但是它似乎不仅解决了couldn't truncate file,而且还不仅仅是解决了“打开文件太多”错误。虽然检查源代码表明它正在按文件句柄进行截断(因此不必打开新的文件句柄来这样做,否则可能会浪费句柄),但此更改似乎也解决了该问题,因此可能实现了底层实现即使是由开放文件限制本身引起的,也会执行一些违反开放句柄限制并死于truncate的方式。

答案 5 :(得分:0)

我在Windows 10计算机上浪费了很多时间,并且出现了相同的错误。我尝试了上述建议以及其他许多建议。我的解决方案是从linux docker映像运行它。