Repack-Budgets
Wenn Git Deltas wahrend des Repacks berechnet, betrachtet es ein Fenster von Kandidaten-Basisobjekten pro Ziel. Grossere Fenster produzieren kleinere Packs, verwenden aber mehr Speicher und CPU.
Schlussel-Stellschrauben
[pack]
windowMemory = 256m
threads = 0
deltaCacheSize = 256m
deltaCacheLimit = 1000
window = 10
depth = 50
sizeLimit = 2g
bigFileThreshold = 512m
Repacking mit benutzerdefinierten Budgets
git repack -adf --window=250 --depth=50 \
--window-memory=512m --threads=8 \
--write-midx --write-bitmap-index
Speicher-Mathematik
git -c pack.threads=2 -c pack.windowMemory=128m repack -adf
Server-Tuning
[uploadpack]
packObjectsHook = /usr/local/bin/pack-objects-wrapper
[pack]
threads = 4
windowMemory = 128m
Grosse Datei-Schwelle
git config core.bigFileThreshold 50m
Haufige Fehler
--window=2000 in der Hoffnung auf engere Packs ohne Speicher-Test setzen — OOM folgt.
Effekt messen
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