Budget di repack
Quando Git calcola i delta durante il repack, considera una finestra di oggetti base candidati per ogni target. Finestre piu grandi producono pack piu piccoli ma usano piu memoria e CPU.
Manopole chiave
[pack]
windowMemory = 256m
threads = 0
deltaCacheSize = 256m
deltaCacheLimit = 1000
window = 10
depth = 50
sizeLimit = 2g
bigFileThreshold = 512m
Repack con budget personalizzato
git repack -adf --window=250 --depth=50 \
--window-memory=512m --threads=8 \
--write-midx --write-bitmap-index
Matematica della memoria
git -c pack.threads=2 -c pack.windowMemory=128m repack -adf
Tuning server
[uploadpack]
packObjectsHook = /usr/local/bin/pack-objects-wrapper
[pack]
threads = 4
windowMemory = 128m
Soglia file grandi
git config core.bigFileThreshold 50m
Errori comuni
Impostare --window=2000 sperando in pack piu compatti senza testare la memoria — segue OOM.
Misurare l'effetto
du -sh .git/objects/pack/
git verify-pack -v .git/objects/pack/pack-*.idx | tail -3
GIT_TRACE2_PERF=1 git repack -adf 2>&1 | tail -20