Problema al enviar un file de tamaño de 10-20 GB a GIT

Estoy tratando de enviar un file de tamaño de hasta 10-20 GB al repository de GIT. Pero GIT no me permite hacerlo.

Obteniendo el siguiente error:

fatal: confundido por datos de fuente de object inestable para d7cf3fdd8ba744a3ba85c70da114d5b4afbde390

¿GIT permite que se comprometa ese tamaño de file enorme individual? ¿O hay alguna restricción en el tamaño de file individual máximo que se puede comprometer con GIT?

Si es así, ¿hay alguna forma de superar esta restricción?

Este post proviene de este bit del código fuente de git:

git_SHA1_Final(parano_sha1, &c); if (hashcmp(sha1, parano_sha1) != 0) die("confused by unstable object source data for %s", sha1_to_hex(sha1)); 

Lo que esto significa es que el contenido del file cambió entre la primera vez que git lo miró (para determinar el nombre del object SHA-1 basado en el contenido del file) y el time en que git pudo hacer un object comprimido "suelto" de eso.

Eso sucedería si algo está modificando activamente el file mientras intentas agregarlo y comprometerlo. Git necesita una versión de "instantánea estable" (bloquear el file, o hacer una copy "segura" que no cambiará mientras que git lo digiere, o algo así).

Dicho esto, existen límites en el tamaño de los files "razonables" en un repository git. Vea esta respuesta de VonC (tiene otro enlace a una respuesta más detallada, también de VonC).

En el pasado, trabajé con 2-4GB de "files" dentro de un repository, y funcionaron, pero ya estábamos abusando de la idea de un "repository git" para entonces. A veces, esto también explotaría los límites de memory en serveres muy pequeños: el problema es que el deltificador en el generador de packages de files intenta mmap todo. En máquinas más grandes, puedes hacer packages más grandes, y luego las máquinas más pequeñas simplemente se rompen.

Si tienes suficiente RAM, es posible. Sin embargo, recomendaría no hacerlo, al less hasta que git tenga mejores algorithms para manejar files grandes.