Por Anónimo (no verificado) , 29 Abril 2026

Presupuestos de repack

Cuando Git computa deltas durante repack, considera una ventana de objetos base candidatos por target. Ventanas más grandes producen packs más pequeños pero usan más memoria y CPU. El ajuste es esencial para repos enormes y runners de build con restricciones por igual.

Perillas clave

[pack]
windowMemory = 256m
threads = 0
deltaCacheSize = 256m
deltaCacheLimit = 1000
window = 10
depth = 50
sizeLimit = 2g
bigFileThreshold = 512m

Repack con presupuestos personalizados

git repack -adf --window=250 --depth=50 \
  --window-memory=512m --threads=8 \
  --write-midx --write-bitmap-index

Matemáticas de memoria

La memoria total es aproximadamente pack.threads × pack.windowMemory + pack.deltaCacheSize.

git -c pack.threads=2 -c pack.windowMemory=128m repack -adf

Ajuste del servidor

[uploadpack]
packObjectsHook = /usr/local/bin/pack-objects-wrapper
[pack]
threads = 4
windowMemory = 128m

Umbral de archivos grandes

git config core.bigFileThreshold 50m

Errores comunes

Establecer --window=2000 esperando packs más apretados sin probar memoria — sigue OOM.

Medir efecto

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