Quindi ecco cosa ho scoperto finora:non sono riuscito a trovare alcuna documentazione su questi '.tmp-XXXX-pack' nascosti nel .git/objects/pack
cartella. Tutti gli altri thread che riesco a trovare riguardano non nascosti file con tmp_
prefisso nella stessa cartella. Anche quelli nascosti vengono chiaramente creati durante l'azione di repack ed è possibile che anche questi si blocchino. Non posso confermare se sia ancora possibile in git 2.3.0 (che ho aggiornato da allora), ma almeno il requisito di spazio su disco non sembra essere cambiato in questa versione più recente - non può ancora completare gc / reimballare. Eliminando questi file .tmp sono stato in grado di recuperare i miei ultimi 4 GB e git sembra ancora comportarsi bene in seguito - i tuoi risultati potrebbero variare, quindi assicurati di avere un backup prima di farlo . Infine, anche 4 GB non erano sufficienti per reimballare con gc --agressive
. Il mio .git
folder è di 1,1 GB dopo la pulizia, il mio intero repository è di 1,7 GB. Quindi 2 volte la dimensione del tuo repository potrebbe non essere sufficiente per git gc
, anche con l'opzione aggressiva (che dovrebbe risparmiare spazio). Quindi ho dovuto prima recuperare più spazio altrove.
Infine, ecco cosa ho ora nel mio script di pulizia (che penso potrebbe essere una buona idea chiamare da un cron job):
#!/bin/bash
set -e
#git gc or remove tmp if that fails (because out of disk space)
git gc --aggressive --prune=now || rm -f .git/objects/*/tmp_* && rm -f .git/objects/*/.tmp-*
Scenario simile (circa 2.3G disponibili), eccetto git gc
stesso fallirebbe anche con fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device
Ciò che ha funzionato è stato git prune
prima, quindi esegui il comando gc.