¿Por qué git es tan lento con archivos grandes?

8

Estaba tratando de usar git para administrar mis fotos (copia de seguridad / tomar instantáneas). La biblioteca completa tiene varios GB. La mayoría de los archivos son JPG de 2-3M. Cuando estaba agregando los archivos al repositorio, parecía tomar varios días. La utilización de la CPU siempre estuvo cerca del 100%.

¿Hay alguna razón por la cual git debería ser lento en archivos grandes?

PD: Sé que Git no fue diseñado para esto.

carpinterías
fuente

Respuestas:

7

Git por defecto comprime archivos. Los archivos JPEG por defecto ya están comprimidos. No es que sean archivos grandes, es que son archivos comprimidos.

Notarás el mismo efecto al agregar archivos ZIP a un repositorio git.

EDITAR: Hay un hilo interesante en /programming/7102053/git-pull-without-remotely-compressing-objects sobre la compresión.

Comunidad
fuente
1
¿Cómo puedo decirle a git que no comprima archivos? No necesariamente necesito espacio eficiente. Quiero que sea lo más rápido posible. ¡Gracias!
Woodings
2
Hay una gran cantidad de interruptores con los que puedes jugar git config, incluidos core.compressiony pack.window. Como nunca he intentado ejecutar git sin compresión, YMMV. Publique lo que descubrió para ayudarnos a todos a aprender de su experiencia.
@Eroen, haces un buen punto. He votado tu comentario.
2
Git también hace (y verifica) un hash sha1 de cada archivo cada vez que lo usa, lo que también puede tomar algún tiempo para archivos grandes.
Eroen
3
@RandolphWest: Bien, pero mal. La compresión zlib se puede desactivar mediante $ git set core.compression 0. sha1 es decenas de MiB por segundo, pero pueden interferir gravemente con condiciones de poca memoria.
Eroen