¿Cómo manejas repositorys grandes de git?

Uno de nuestros repositorys git es lo suficientemente grande como para que un clon git tome una cantidad molesta de time (más de unos pocos minutos). El directory .git es ~ 800M. La clonación siempre ocurre en una LAN de 100Mbps en ssh. Incluso la clonación en ssh a localhost lleva más de unos minutos.

Sí, almacenamos datos y blobs binarys en el repository.

A falta de sacarlos, ¿hay alguna otra manera de hacerlo más rápido?

Incluso si moviéramos files grandes, ésa era una opción, ¿cómo podríamos hacerlo sin una gran interrupción reescribiendo la historia de todos?

Enfrenté la misma situación con un repository de ~ 1GB, que necesitaba transferirse a través de DSL. Fui con el sneakernet a menudo olvidado: ponerlo en una unidad flash y conducirlo a través de la ciudad en mi automobile. Eso no es práctico en cada situación, pero en realidad solo tienes que hacerlo para el clon inicial. Después de eso, las transferencias son bastante razonables.

Estoy bastante seguro de que no podrás mover esos files binarys sin reescribir el historial.

Dependiendo de cuáles sean los binarys (quizás algunas bibliotecas preconstruidas o lo que sea), podría tener un pequeño script para que el desarrollador ejecute post-checkout que los descargue.

Gigabit … fibra … Sin reescribir el historial, usted es bastante limitado.

Puedes probar un git gc , puede que lo limpie un poco, pero no estoy seguro si eso se hace con un clon de todos modos.

Incluso si moviéramos files grandes, ésa era una opción, ¿cómo podríamos hacerlo sin una gran interrupción reescribiendo la historia de todos?

Verifique esta respuesta: Will git-rm -cached borrará los files de tree de trabajo de otro usuario cuando lo extraigan

Esta medida, junto con agregar patrones a .gitignore , debería ayudarlo a mantener esos files grandes.