gc git sur la machine avec quota
Question
Simple question, je suis en train de courir git gc
sur une machine avec un quota. Pré-gc, je suis à environ 18 Go d'utilisation, la quasi-totalité de ce qui est mon dépôt git cloné. Ma limite de disque est 25GB. Au cours de l'opération de git gc
, les fichiers temporaires sont assez écrits sur le disque pour frapper ma limite et provoquer ainsi l'opération de git gc
échec.
Je peux supprimer le .git/objects/pack/tmp_pack_*
après l'opération a échoué et redescendre à 18 Go d'utilisation, mais je voudrais vraiment git gc
vraiment complet et récupérer un peu de performance.
Y at-il une option de fantaisie (ou une série d'autres commandes git) que je peux utiliser qui ne nécessite pas d'abord l'écriture> 7GB des fichiers temporaires sur le disque?
La solution
Quelle partie du gc
est important pour vous? Vous pouvez essayer d'exécuter les pièces git-prune
et git-repack
séparément. Avec git-prune
, assurez-vous et spécifiez une date limite avec l'option --expire
. S'il y a une tonne d'objets en vrac dans votre pension, les faire sortir de la première manière serait utile. *
Avec git-repack
, vous pouvez peut-être jouer avec les réglages de profondeur et de fenêtre pour obtenir quelque chose assez petit pour fonctionner dans l'espace que vous avez.
* Je ne prétends pas comprendre toutes les questions en jeu, mais je remarque que le pruneau est après le repliage dans le code git-gc.
Autres conseils
On dirait que la meilleure solution est de le demander un plus grand quota, mais je suis toujours intéressé à entendre des solutions de contournement. Aujourd'hui, ils se sentaient généreux, mais demain ...:)
git prune
est une excellente suggestion, bon appel Jefromi.
Une autre chose que vous pouvez faire est de compresser vos fichiers d'autres; git gc
; décomprimer.
7z
obtient une compression étonnante, mais ne conservera pas et propriétaire de liens durs / groupe Unix, IIRC. Si vous avez un quota, les fichiers sont probablement tous appartenant à votre compte, donc pas de soucis sur le premier score. Mais le plus sûr est tar c --lzma
si vous avez, ou tout simplement tar czf
ou cjf
. Si vous avez beaucoup de petits fichiers, l'umm, la fragmentation externe (?) Pour bloquer la taille pourrait être importante.