Da Anonimo (non verificato) , 29 Aprile 2026

Il costo del repack completo

git gc tradizionale esegue git repack -ad, riscrivendo tutti gli oggetti in un solo packfile. Su repo multi-gigabyte, sono ore di CPU e IO. Il repack geometrico (Git 2.32+) lo evita mantenendo una serie di pack le cui dimensioni seguono una progressione geometrica.

Come funziona

Le dimensioni dei pack formano una sequenza dove ogni pack e almeno N volte piu grande del successivo piu piccolo.

Esecuzione

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

Abbinamento con MIDX

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

Manutenzione in background

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

Quando forzare un repack completo

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

Considerazioni server-side

I forge server (GitHub, GitLab, Gitea) usano il repack geometrico su scala.

Errori comuni

Eseguire repack geometrico senza MIDX — le performance regrediscono.

Valori comuni

  • Default --geometric=2: bilanciato.
  • --geometric=4: meno pack piu grandi.
  • --geometric=1.5: merge piu aggressivo.