Mise à jour: git prune
«résoudrait» le problème, en ce sens qu'il supprimera ces objets en vrac
( git gc
appels git prune
, mais uniquement pour les objets en vrac de plus de deux semaines, par défaut).
Cependant, comme le mentionne l' OP Michael Donohue dans les commentaires:
J'aime l'aspect sécurité de garder les objets en vrac pendant deux semaines, si je veux revenir en arrière et regarder quelques anciennes révisions, donc je n'aime pas vraiment cette solution.
Je n'ai aucun problème avec la taille ou les performances de git, c'est juste 'git gui' qui insiste pour me demander de compresser la base de données, même si la compression de la base de données n'aurait aucun effet.
Réponse originale:
Le problème de " git gc
" ne pas supprimer tous les objets en vrac a déjà été signalé (fin 2008, " " git gc
"ne semble plus supprimer les objets en vrac "
git gc
ne supprime que les objets lâches de plus de deux semaines, si vous voulez vraiment les supprimer maintenant, exécutez git prune.
Mais assurez-vous qu'aucun autre processus git ne peut être actif lorsque vous l'exécutez, ou il pourrait éventuellement marcher sur quelque chose.
" git gc
" décompressera les objets devenus inaccessibles et qui se trouvaient actuellement dans des packs.
En conséquence, la quantité d'espace disque utilisée par un référentiel git peut en fait augmenter considérablement après une git gc
opération " ", ce qui pourrait être surprenant pour quelqu'un qui est presque plein sur son système de fichiers, supprime un certain nombre de branches d'un référentiel de suivi , puis fait un " git gc
" peut avoir une surprise très désagréable.
[
Exemple: les ]
anciennes branches sont réservées via une balise telle que next-20081204
.
Si vous mettez à jour votre copie locale du linux-next
référentiel chaque jour, vous accumulerez un grand nombre de ces anciennes balises de branche.
Si vous en supprimez ensuite toute une série et que vous l'exécutez git-gc
, l'opération prendra un certain temps et le nombre de blocs et d'inodes utilisés augmentera considérablement.
Ils disparaîtront après un " git prune
", mais quand je fais cette opération de ménage, j'ai souvent souhaité une --yes-I-know-what-I-am-doing-and-it's-unsafe-but-just-drop-the-unreachable-objects-cause-this-is-just-a-tracking-repository
option pour "git gc".
Dans votre cas, est-ce qu'un " git prune
" serait utile?
(éventuellement en utilisant "now" dans la gc.pruneexpire
variable de configuration, nécessaire pour que le comportement ci-dessus se produise).
Vous avez également (à partir du même fil):
repack -a -d -l
Notez le «a» minuscule.
git-gc
appelle repack avec 'A' majuscule, ce qui provoque le décompactage des objets inaccessibles. Le petit 'a' est destiné aux personnes qui savent ce qu'elles font et qui veulent que git laisse simplement tomber les objets inaccessibles.