Git pull falla con error de encabezado de package incorrecto

git pull falla con el siguiente error

remote: Counting objects: 146, done. remote: fatal: unable to create thread: Resource temporarily unavailable error: git upload-pack: git-pack-objects died with error. fatal: git upload-pack: aborting due to possible repository corruption on the remote side. remote: aborting due to possible repository corruption on the remote side. fatal: protocol error: bad pack header 

¿Alguna idea de cómo tirar con éxito?

Las líneas que comienzan con el remote se emiten desde git corriendo en el sistema remoto. El error:

 fatal: unable to create thread: Resource temporarily unavailable 

… sugiere fuertemente que se ha quedado sin memory en el server, lo que puede suceder si tiene:

  1. Un repository con una gran cantidad de files de gran tamaño, lo que puede causar que el nuevo empaquetado lleve mucha memory.
  2. Memoria virtual limitada: en general, o solo para esa count debido a la configuration de ulimit

Una sugerencia aquí es limitar la cantidad de memory que puede tomar el empaque iniciando session en el sistema remoto (como el usuario que ejecuta git) y haciendo:

 git config --global pack.windowMemory "100m" git config --global pack.packSizeLimit "100m" git config --global pack.threads "1" 

Actualización: esta respuesta fue una sugerencia de edición de la respuesta de Mark Longair, que ahora ha actualizado su respuesta con el nombre correcto.

De hecho, pack.SizeLimit es incorrecto, es pack.packSizeLimit .

Cuando agregué esta opción, funcionó para mí 🙂

Tuve que configurarlo en los repositorys local y remoto.