Basi del packfile
Un packfile raggruppa molti oggetti in un solo file con compressione delta — invece di memorizzare ogni versione di un file per intero, oggetti simili condividono una base e memorizzano solo la differenza. Riduzione di dimensione 5x-50x sui repo reali.
Ispezionare i pack
git verify-pack -v .git/objects/pack/pack-*.idx | head
git count-objects -v
git cat-file --batch-all-objects --batch-check='%(objectname) %(objecttype) %(objectsize:disk)'
Repacking
git repack -ad
git repack -adf --depth=50 --window=250
git repack --geometric=2 -d
Repacking geometrico
Il repacking geometrico (Git 2.32+) mantiene una serie di pack in rapporto 1:N, evitando il costo di repackare tutto ogni volta.
Multi-pack-index
git multi-pack-index write
git multi-pack-index verify
Tuning dei delta
[pack]
windowMemory = 256m
threads = 0
deltaCacheSize = 256m
Bitmap di raggiungibilita
git repack -adb
Errori comuni
Cancellare manualmente i file pack — Git li traccia nei metadati; usare git repack.