Da Anonimo (non verificato) , 29 Aprile 2026

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