I am trying to clone a large svn repository with git svn. The repo has 100,000 revisions. Size is about 9 GB (untouched folder). The largest repo file is 300 MB.
The branch structure is a complete mess in the repo. Lots of incorrect and missing merge information, no standard layout. I tried to get the latest versions with and without branches. A command without branches is as follows:
git svn clone url_to_trunk_in_repo -r100000: HEAD - username = svn_user
HEAD is currently at step 101037. The process has been running for some time (hours) and does not work with something like this:
There is not enough memory during the request for 29040 bytes, the total sbrk () is 254959616 bytes!
I have the latest version of git for Windows (Git -1.9.4-preview20140929) running Windows 7 x64 with 16 GB of RAM.
I have done several searches for this kind of glitch. Several messages previously referred to a problem with large files, which were most likely fixed already (did not check). In any case, this problem refers to the large distribution indicated by the error message during the "large" request. However, the process crashes when you add files of a regular small implementation. Therefore, I do not think this is a big problem with the file.
I tried changing the package settings in etc / gitconfig, which is a general tip. However, this did not help. I did not expect this to help at all, because the memory error during boot from the svn server was not during git gc, which processes packages, AFAIK.
Further digging led me to a perl memory limit of 256 MB. This is most likely because I always get an error with almost 256 MB sbrk ().
Further investigation of perl memory limits causes only OS limitations. This is 2 GB on win32 (3 GB with a special switch) and RAM limitation for 64-bit windows. I also found some tips on increasing Cygwin's memory limits, but this is not applicable here.
The 256 MB limit is ridiculous in my eyes, and I was desperately looking for a way around this.
EDIT: This is possibly a Perl 5.8.8 problem (git uses this version). I also installed strawberry perl 5.16.3 x64. I wrote this test code, which is a modification of the code hosted on https://stackoverflow.com/a/212960/2/ ::
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;
With strawberray perl, this works fine. In git bash, I get the error described earlier.
There is not enough memory during the "large" request for 33558528 bytes, total sbrk () 2351800 32 bytes in mem.pl 9 line.
EDIT 2: I tried strawberry perl 5.8.8-1. It distributes correctly, but after a crash, the program crashes. Therefore, this is not a bug in perl 5.8.8, but in the version that comes with git (msys perl 5.8.8) The strawberry configuration of perl and msys perl is different in many entries. The most noticeable difference for me is usemymalloc = n (strawberry) and usemymalloc = y (msys perl).
I also checked for ulimit in git bash, which does not detect any anomalies:
$ 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