git svn clone Repo grande en Windows: sin memory, no es un problema de files de gran tamaño

Estoy intentando clonar un gran repository svn con git svn. El repository tiene 100000 revisiones. El tamaño es de aproximadamente 9 GB (carpeta prístina). El file más grande en el repository es de 300 MB.

La estructura de la sucursal es un desastre total en el repository. Mucha información incorrecta y faltante de fusión, sin layout estándar. Intenté search las últimas revisiones con y sin sucursales. El command sin twigs se ve así:

git svn clone url_to_trunk_in_repo -r100000: HEAD –username = svn_user

HEAD se encuentra actualmente en 101037. El process se ejecuta por un time (horas) y falla con algo como esto:

Sin memory durante la request de 29040 bytes, sbrk total () es 254959616 bytes.

Tengo la última revisión de git mantenida para Windows (Git-1.9.4-preview20140929) que se ejecuta en Windows 7 x64 con 16 GB de RAM.

He hecho una búsqueda sobre este tipo de falla. La mayoría de las publicaciones se refieren a un problema con files grandes de hace algunos años que probablemente ya se haya solucionado (no se ha comprobado). De todos modos, este problema se refiere a la asignación grande, indicada por el post de error durante la request "grande" . Sin embargo, el process falla al agregar files de implementación normales de pequeño tamaño. Por lo tanto, no creo que este es un problema de file grande.

Intenté modificar la configuration del package en etc / gitconfig, que es un consejo común. Sin embargo, esto no ayudó. No esperaba que ayudara en absoluto porque el error de memory es durante la descarga del server svn no durante git gc que procesa los packages, AFAIK.

Investigar más me llevó a una limitación de memory perl de 256MB. Este es probablemente el caso porque siempre obtengo el error con casi 256MB sbrk ().

Investigaciones adicionales sobre las limitaciones de la memory perl solo abren las limitaciones de la memory del sistema operativo. Eso es 2GB en win32 (3GB con interruptor especial) y límite de RAM para windows de 64 bits. También encontré algunos consejos para boost las limitaciones de la memory Cygwin, pero eso no se aplica aquí.

El límite de 256 MB es ridículo en mis ojos y estoy buscando desesperadamente una forma de evitar esto.


EDITAR: Esto es propagablemente un problema de Perl 5.8.8 (git usa esa versión). También he instalado Strawberry Perl 5.16.3 x64. He escrito este código de testing, que es una modificación del código publicado en esta pregunta de stackoverflow :

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"; } 

Con Strawberray Perl, esto funciona perfectamente. En git bash, recibo el error descrito anteriormente.

Memoria insuficiente durante la request "grande" para 33558528 bytes, sbrk total () es 2351800 32 bytes en la línea mem.pl 9.


EDIT 2: He probado fresa perl 5.8.8-1. Se asigna correctamente, sin embargo, el progtwig se bloquea después de la ejecución. Por lo tanto, esto no es un error en Perl 5.8.8 en general, sino en la versión que se envía con git (msys perl 5.8.8). La configuration de fresas perl y msys perl difiere en muchas inputs. La diferencia más notoria para mí es usemymalloc = n (strawberry) y usemymalloc = y (msys perl).

También verifiqué por ulimit en git bash, que no muestra ninguna anormalidad:

 $ 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 

Con Cygwin y Git 2.1.1 puedo ejecutar git svn en mi repository sin ningún problema de memory. Mi progtwig de testing funciona bien también. No he probado 1.x-Versions de Git en Cygwin pero supongo que funcionarían porque el problema era una limitación de la memory de msysperl que es reemplazada por Cygwin.

No marcaré esto como respuesta, ya que no resuelve mi pregunta original. Es mi solución actual para las testings con Git.

Me gustaría tener una distribución de Git for Windows con Perl que funcione correctamente. Existe un problema para actualizar Perl aquí . Sin embargo, esta no parece ser una tarea fácil. Lo mismo vale para la versión SVN utilizada por git svn en Windows: Cómo actualizar SVN