Da Anonimo (non verificato) , 29 Aprile 2026

Conoscere il proprio peso

Prima di ottimizzare, misurare. Git fornisce git count-objects per le statistiche base; il git-sizer di terze parti di GitHub fornisce un'analisi piu profonda.

git count-objects

git count-objects -v
git count-objects -vH
git count-objects --human-readable

git-sizer

git-sizer
git-sizer --verbose
git-sizer --no-progress --threshold 1

Esempi di insight

  • Numero massimo di file in un tree: avverte sopra 100k.
  • Dimensione massima di blob: avverte sopra 50MB.
  • Dimensione totale di tutti i commit.
  • Profondita massima dei tag.
  • Oggetti raggiungibili totali.

Trovare file grandi

git rev-list --objects --all | \
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize:disk) %(rest)' | \
  awk '$1=="blob" {print $3, $4}' | sort -rn | head

Azioni per scoperta

  • Blob grandi: migrare a Git LFS o riscrivere con filter-repo.
  • Molti file piccoli: abilitare feature.manyFiles, sparse checkout.
  • Molti ref: abilitare protocollo v2; considerare reftable.
  • Walk lenti: scrivere commit-graph con Bloom filter.
  • Lookup lenti: abilitare MIDX con bitmap.

Errori comuni

Guardare solo la dimensione di .git su disco — gli oggetti packed condividono byte via delta.

Tracciare la crescita

git-sizer --json > sizer-$(date +%Y%m%d).json
diff <(jq . sizer-old.json) <(jq . sizer-new.json)