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

Diagnostiquer la corruption

Les dépôts se corrompent par perte d'alimentation, panne de disque, sync réseau partiel, ou outils non-Git buggés touchant .git. Les symptômes vont de "fatal: bad object" à du contenu erroné livré silencieusement. Le diagnostic commence par fsck :

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

La config tout-en-un

En assemblant les morceaux : c'est une configuration unique qui applique la pile moderne de performance de Git. Déposez-la dans .git/config sur un clone frais, exécutez les tâches uniques et vous avez la config recommandée pour repos avec centaines de milliers de fichiers et historique actif.

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

fast-export et fast-import

git fast-export sérialise un dépôt en stream de commandes ; git fast-import reconstruit un dépôt depuis un. Ensemble ils forment le protocole d'échange de données de Git — utilisé par les importers (cvs2git, hg-fast-export, p4-fast-export) et par des outils comme git filter-repo en interne.

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

Le problème cross-fork

Les serveurs Forge (GitHub, GitLab) hébergent ensemble plusieurs forks d'un repo. Naïvement, un seul packfile compresse les deltas à travers tous les forks — efficace en disque, mais inefficace pour servir un seul fork. Les îles delta restreignent les chaînes delta pour que celles de chaque fork restent dans son propre ensemble d'objets.

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

La couche transport

Le protocole de transport de Git entrelace historiquement les messages client et serveur sur une connexion à état. stateless-connect (introduit pour le protocole v2 sur HTTP) découple les requêtes pour que chacune soit routable indépendamment.

Flux sans état

GIT_TRACE_PACKET=1 GIT_TRACE_CURL=1 \
  git -c protocol.version=2 fetch origin 2>&1 | head -50

Bénéfices HTTP/2

Le multiplexing HTTP/2 permet à plusieurs requêtes sans état de partager une connexion.

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

Pourquoi v2

Le protocole v0/v1 envoyait la publicité complète des refs du serveur au début de chaque fetch — un payload proportionnel au nombre de refs. Sur des repos avec des dizaines de milliers de refs, cela dominait le temps de transfert. Le protocole v2 (défaut en Git 2.26+) permet au client de demander des refs spécifiques par nom.

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

Le compromis shallow

Un clone shallow (--depth=N) télécharge seulement les N derniers commits. Plus rapide, plus petit, mais avec mises en garde : beaucoup d'opérations dépendantes de l'historique deviennent impossibles ou erronées.

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

Deux gains de parallélisme

Deux paramètres débloquent des speedups significatifs pour les opérations quotidiennes. core.preloadIndex parallélise les appels lstat que git status fait ; le checkout parallèle (Git 2.32+) parallélise les écritures de fichiers durant git checkout, git switch et git restore.

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

Budgets de repack

Quand Git calcule des deltas durant le repack, il considère une fenêtre d'objets base candidats par cible. Des fenêtres plus grandes produisent des packs plus petits mais utilisent plus de mémoire et CPU.