Par Anonyme (non vérifié) , 29 avril 2026

Connaître son poids

Avant d'optimiser, mesurez. Git fournit git count-objects pour stats basiques ; le tiers git-sizer de GitHub donne une analyse plus profonde avec seuils d'alerte.

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

Aperçus exemple

  • Nombre max de fichiers dans un tree : alerte au-dessus de 100k.
  • Taille max de blob : alerte au-dessus de 50MB.
  • Taille totale de tous les commits.
  • Profondeur max de tag.
  • Total des objets atteignables.

Trouver les gros fichiers

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

Actions par découverte

  • Gros blobs : migrer vers Git LFS ou réécrire historique.
  • Beaucoup de petits fichiers : activer feature.manyFiles, sparse checkout.
  • Beaucoup de refs : activer protocole v2 ; considérer reftable.
  • Parcours lents : écrire commit-graph avec filtres Bloom.
  • Recherches lentes : activer MIDX avec bitmaps.

Erreurs courantes

Regarder seulement la taille de .git sur disque — les objets empaquetés partagent les bytes via deltas.

Suivre la croissance

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