Cómo manejar el gran repository de git

Estamos en una position en la que no tenemos absolutamente ninguna idea de cómo resolver. El problema es que tenemos un tamaño de repo 2.51 GiB. El problema principal es el uso de RAM del server git al clonar el repository: el server empaqueta el repository y luego de un time, la connection se interrumpe (¡o sucede algo más que impide la clonación!). Otros services en el server (otro git-repo y un jenkins) se van a intercambiar y ya no se pueden usar.

Aquí hay algunas informaciones sobre nuestro repository:

  • git count-objects -vH dice {1}
  • un marco en la aplicación tiene (solo!) ~ 350 MB
  • otro marco tiene ~ 150 MB
  • hay algunos frameworks más, pero con less tamaño
  • un * .pack con un tamaño de 2.75 GB

Los grandes frameworks se actualizan de 2 a 3 veces. Entonces pensamos (no somos git gurus :)) que la historia contiene versiones anteriores de los grandes frameworks.

Hemos echado un vistazo a git repack y a git filter-branch . Pero stand, cuando lo comprendemos correctamente, no salvamos nuestro problema.

No podemos eliminar uno de nuestros grandes frameworks porque necesitamos que se desarrolle. Cuando lo eliminamos del historial, ya no podemos realizar el pago en una versión anterior.

Hemos tratado de mover los grandes frameworks a repositorys separados de git. Pero eso no resolverá el problema porque nuestra historia es mucho más grande.

Entonces, ¿cómo podemos resolver nuestro problema sin perder cosas de la historia?

{1}

count: 829 size: 4.82 MiB in-pack: 23365 packs: 2 size-pack: 2.56 GiB prune-packable: 13 garbage: 1 size-garbage: 6.00 KiB 

***Editar***

Aquí está mi resultado cuando digo:

git clone https: //git.repo.url.git

 remote: Counting objects: 23942, done. remote: warning: suboptimal pack - out of memory remote: fatal: Out of memory, malloc failed remote: aborting due to possible repository corruption on the remote side. fatal: protocol error: bad pack header 

Cuando hago un git init y configuro así ( debido a este comentario ):

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true packedGitLimit = 128m packedGitWindowSize = 128m [pack] deltaCacheSize = 128m packSizeLimit = 128m windowMemory = 128m 

mi salida es esta:

 remote: Counting objects: 23942, done. remote: warning: suboptimal pack - out of memory