Aplaste cada commit de más de 1 año en un gran repository y recurso limitado

Tengo un repository git de 4 años que comienza a ser realmente enorme: ~ 30GO, 60,000 files. Uno o dos compromisos se realizan todos los días. Me gustaría aplastar todas las confirmaciones anteriores a 1 año en el primer compromiso. Pero debido a problemas técnicos, no puedo recrear el repository, tengo que trabajar con él. La versión de git disponible es 1.7.2.5 (no es posible actualizar). El espacio en disco está limitado a 100go (por lo que solo 70go todavía están disponibles) y la memory del dispositivo es 4go (19mo de intercambio, sí MO …), tampoco es posible mover el repository en otra computadora.

Probé la solución seleccionada en esta página. ¿ Has aplastado los primeros dos commits en Git? , la versión de febrero de 2009. Funciona hasta el 'git rebase –onto'. El git-rebase causa un error OutOfMemory, no estoy seguro de la causa, creo que es tal vez porque intenta reproducir cada commit en una sola toma. Estoy pensando en usar git-cherry-pick y jugar cada commit uno a la vez, luego mover master en la parte superior.

¿Es una buena idea? o alguien tiene una mejor idea? ¡gracias! 🙂

Es poco probable que la cantidad de confirmaciones esté causando el problema, git es muy eficiente para comprimir files de text.

La mejor forma de networkingucir el tamaño de un repository git es utilizar una herramienta como el limpiador de repositorys BFG para eliminar grandes files binarys de su historial.

Las dependencies comstackdas, como los packages de Nuget y los Jars, deben almacenarse principalmente en un repository de artefactos (no en git), el process de compilation de la aplicación recuperará las dependencies en el momento de la compilation.

También puede usar Git LFS para almacenar sus files binarys de una manera más transparente.