Da Anonimo (non verificato) , 29 Aprile 2026

Perche l'index e lento

Anche con sparse checkout, l'index per default contiene una voce per file nell'intero repo. Lo sparse index (Git 2.37+) sostituisce le directory escluse con una singola voce di tree, riducendo l'index di 100x o piu.

Abilitare

git sparse-checkout init --cone --sparse-index
git config index.sparse true
git update-index --sparse

Come funziona

Ogni directory esclusa e rappresentata nell'index come una voce di modo 040000 (tree).

Ispezione

git ls-files --sparse | head
git ls-files -t | grep ^S | head
GIT_TRACE2_PERF=1 git status 2>&1 | grep sparse

Numeri di performance

Su un monorepo reale con 4M file, il team Microsoft Office ha riportato git status in calo da 3 secondi a meno di 200ms.

Compatibilita

Molti comandi sono sparse-aware: status, add, commit, diff, checkout, reset, restore, stash, ls-files.

Forzare l'espansione

git update-index --no-sparse
git update-index --sparse

Errori comuni

Provare ad abilitare lo sparse index in modalita sparse-checkout non-cone.