Par Anonyme (non vérifié) , 29 avril 2026

Le coût du repack complet

git gc traditionnel exécute git repack -ad, réécrivant tous les objets dans un packfile. Sur un repo de plusieurs gigaoctets, c'est des heures de CPU et IO. Le repacking géométrique (Git 2.32+) l'évite en maintenant une série de packs dont les tailles suivent une progression géométrique.

Comment ça marche

Les tailles de pack forment une séquence où chaque pack est au moins N fois plus grand que le suivant plus petit. Le coût agrégé dans le temps est O(objets totaux × log) au lieu de O(objets totaux) par gc.

Exécution

git repack --geometric=2 -d
git repack --geometric=2 -d --write-midx
git config maintenance.incremental-repack.enabled true

Apparier avec MIDX

git config core.multiPackIndex true
git multi-pack-index write
git multi-pack-index expire

Maintenance en arrière-plan

git maintenance start
git maintenance run --task=incremental-repack

Quand forcer un repack complet

git repack -ad --depth=50 --window=250 --write-midx --write-bitmap-index

Considérations côté serveur

Les serveurs Forge (GitHub, GitLab, Gitea) utilisent le repack géométrique à grande échelle.

Erreurs courantes

Exécuter le repack géométrique sans MIDX. Régler le facteur trop petit (e.g., 1.1) — les packs prolifèrent.

Valeurs courantes

  • --geometric=2 : équilibré.
  • --geometric=4 : moins de packs, plus gros.
  • --geometric=1.5 : merging plus agressif.