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

Expérimentations opt-in

Le projet Git teste de nouvelles fonctionnalités de performance derrière feature.experimental. L'activer active des paramètres en évaluation pour default-on.

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

Le bouquet de paramètres

Régler les monorepos implique une douzaine de paramètres. Plutôt que de tous les mémoriser et appliquer, Git fournit des "feature flags" qui activent un bouquet cohérent. feature.manyFiles est le plus utile.

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

Versions de l'index

L'index Git a eu plusieurs formats. Version 2 est la baseline historique. Version 3 a ajouté skip-worktree et autres extensions. Version 4 (recommandée pour gros repos) ajoute la compression de préfixe des chemins.

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

Le daemon intégré

Git 2.36 a introduit un daemon fsmonitor intégré, éliminant le besoin de services externes comme Watchman. Il s'exécute sous git fsmonitor--daemon, écoute les événements OS et répond aux requêtes Git avec la liste des chemins changés.

Cycle de vie

git config core.fsmonitor true
git status
git fsmonitor--daemon status
git fsmonitor--daemon stop
git fsmonitor--daemon run

Comment ça s'intègre

Quand core.fsmonitor=true, Git interroge le daemon pour les chemins changés.

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

Le problème du parcours status

git status compare l'arbre de travail à l'index, parcourant les stat info de chaque fichier suivi. Sur un repo d'un million de fichiers cela peut prendre plusieurs secondes. Fsmonitor utilise les notifications de changement de fichier de l'OS (FSEvents sur macOS, ReadDirectoryChangesW sur Windows, inotify sur Linux).

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

Ce qu'est Scalar

Scalar (initialement outil Microsoft, livré avec Git en 2.38+) est un wrapper qui applique la pile complète de performance — partial clone, sparse checkout, sparse index, fsmonitor, commit-graph, MIDX, repack géométrique, maintenance en arrière-plan — avec une seule commande.

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

Fetching paresseux d'objets

Partial clone (--filter) permet à un clone d'omettre certains objets du transfert initial, les fetchant paresseusement quand nécessaires. Le remote promisor tient sa promesse de les fournir à la demande.

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

Pourquoi l'index est lent

Même avec sparse checkout, l'index par défaut contient une entrée par fichier dans tout le repo — un million d'entrées sur un monorepo, même si seulement mille sont présents dans l'arbre de travail. Le sparse index (Git 2.37+) remplace les répertoires exclus par une seule entrée tree.

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

L'ensemble de travail du monorepo

Dans un monorepo, les développeurs individuels ne touchent généralement qu'un petit sous-ensemble — une ou deux apps, une poignée de bibliothèques. Sparse checkout peuple uniquement ces chemins dans l'arbre de travail.