Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git svn在Windows下克隆大型repo:内存不足-不是大文件问题_Windows_Git_Perl_Svn_Memory - Fatal编程技术网

git svn在Windows下克隆大型repo:内存不足-不是大文件问题

git svn在Windows下克隆大型repo:内存不足-不是大文件问题,windows,git,perl,svn,memory,Windows,Git,Perl,Svn,Memory,我正在尝试用git svn克隆一个大型svn存储库。回购协议有10万次修订。大小约为9GB(原始文件夹)。回购协议中最大的文件是300MB 分支机构结构在回购协议中完全是一团糟。大量错误和丢失的合并信息,没有标准布局。我试图获取最新的修订版本,有分支和没有分支。没有分支的命令如下所示: git svn克隆url\u到\u repo中的\u trunk\u-r100000:HEAD--username=svn\u用户 HEAD目前为101037。该过程运行了一段时间(小时),但失败如下: 请求29

我正在尝试用git svn克隆一个大型svn存储库。回购协议有10万次修订。大小约为9GB(原始文件夹)。回购协议中最大的文件是300MB

分支机构结构在回购协议中完全是一团糟。大量错误和丢失的合并信息,没有标准布局。我试图获取最新的修订版本,有分支和没有分支。没有分支的命令如下所示:

git svn克隆url\u到\u repo中的\u trunk\u-r100000:HEAD--username=svn\u用户

HEAD目前为101037。该过程运行了一段时间(小时),但失败如下:

请求29040字节时内存不足,sbrk()的总数为254959616字节

我已经获得了最新维护的git Windows版本(git-1.9.4-preview20140929),它运行在Windows7x64上,内存为16GB

我对这种失败做了一些调查。大多数帖子都是指几年前大文件的问题,很可能已经解决了(还没有检查)。无论如何,这个问题是指大型分配,由“大型”请求期间的错误消息指示。但是,在添加小尺寸的正常实现文件时,该过程失败。因此,我不认为这是一个大文件问题

我试图修改etc/gitconfig中的包设置,这是一个常见的建议。然而,这没有帮助。我没想到它会有任何帮助,因为内存错误发生在从svn服务器下载的过程中,而不是在处理包的git gc过程中,AFAIK

进一步挖掘导致perl内存限制为256MB。最有可能是这种情况,因为我总是在几乎256MB sbrk()的情况下得到错误

对perl内存限制的进一步研究只会带来操作系统内存限制。这是win32上的2GB(带特殊开关的3GB)和64位windows的RAM限制。我还发现了一些提高Cygwin内存限制的建议,但这在这里并不适用

256MB的限制在我看来是荒谬的,我拼命寻找一种方法来绕过这个限制


编辑: 这很可能是Perl5.8.8版本的问题(git使用该版本)。我还安装了草莓perl 5.16.3 x64。 我已经编写了此测试代码,它是对发布在以下位置的代码的修改:


有了Cygwin和Git 2.1.1,我可以在我的回购上运行Git svn,而不会出现任何内存问题。我的测试程序也运行良好。我还没有在Cygwin上尝试过Git的1.x版本,但我想它们会起作用,因为问题是msysperl的内存限制被Cygwin所取代

我不会将此标记为答案,因为它不能解决我原来的问题。这是我目前使用Git进行测试的变通方法


我希望有一个Git for Windows发行版和正常工作的Perl。升级Perl时存在一个问题。然而,这似乎不是一项容易的任务。同样适用于git SVN在Windows上使用的SVN版本:

你读过这个吗?是的,我读过。这是指此处不适用的大文件问题。这篇文章还链接到我提到的补丁。cygwin配置似乎也有问题,我没有使用它。
use strict;
use warnings;

my @s;
my $count = 200;
my $alloc = 30000000;

for (my $i = 0; $i < $count; $i++)
{   print "Trying allocation...";
    $s[$i] = "a" x $alloc;   # ok
    print "OK\n\n";
}
$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 8
stack size              (kbytes, -s) 2046
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63
virtual memory          (kbytes, -v) 2097152