Von Gast (nicht überprüft) , 29 April 2026

Die Bundle-Einstellung

Tuning von Monorepos beinhaltet ein Dutzend Einstellungen. Statt jede einzelne zu memorieren und anzuwenden, bietet Git "Feature-Flags", die ein koharentes Bundle aktivieren.

Von Gast (nicht überprüft) , 29 April 2026

Index-Versionen

Git's Index hatte mehrere Formate. Version 2 ist die historische Baseline. Version 3 fugte skip-worktree hinzu. Version 4 (empfohlen fur grosse Repos) fugt Prafix-Kompression der Pfade hinzu.

Einstellung

git config index.version 4
git update-index --index-version 4

Warum Version 4 hilft

Fur Monorepos mit tiefen Pfaden dominieren wiederholte Pfad-Prafixe die Index-Grosse. V4 reduziert den Index um 30-60% auf realen Monorepos.

Von Gast (nicht überprüft) , 29 April 2026

Der eingebaute Daemon

Git 2.36 fuhrte einen eingebauten fsmonitor-Daemon ein, der die Notwendigkeit externer Dienste wie Watchman eliminiert.

Lebenszyklus

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

Wie er sich integriert

Wenn core.fsmonitor=true, fragt Git den Daemon nach geanderten Pfaden.

Von Gast (nicht überprüft) , 29 April 2026

Das Status-Walk-Problem

git status vergleicht den Working Tree mit dem Index und durchquert die stat-Info jeder verfolgten Datei. Auf einem Repo mit einer Million Dateien kann das Sekunden dauern. Fsmonitor verwendet die Datei-Anderungs-Benachrichtigungen des Betriebssystems.

Von Gast (nicht überprüft) , 29 April 2026

Was Scalar ist

Scalar (ursprunglich ein Microsoft-Tool, mit Git ab 2.38+ gebundelt) ist ein Wrapper, der den vollstandigen Performance-Stack — partial clone, sparse checkout, sparse index, fsmonitor, commit-graph, MIDX, geometrisches Repack, Background Maintenance — mit einem Befehl anwendet.

Von Gast (nicht überprüft) , 29 April 2026

Faules Objekt-Fetching

Partial Clone (--filter) ermoglicht es einem Klon, einige Objekte beim ersten Transfer wegzulassen und sie bei Bedarf nachzuladen.

Von Gast (nicht überprüft) , 29 April 2026

Warum der Index langsam ist

Selbst bei Sparse Checkout enthalt der Index standardmassig einen Eintrag pro Datei im gesamten Repo. Der Sparse Index (Git 2.37+) ersetzt ausgeschlossene Verzeichnisse durch einen einzigen Tree-Eintrag.

Aktivieren

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

Wie es funktioniert

Jedes ausgeschlossene Verzeichnis wird im Index als ein Eintrag mit Modus 040000 (Tree) reprasentiert.

Von Gast (nicht überprüft) , 29 April 2026

Das Working-Set des Monorepos

In einem Monorepo beruhren einzelne Entwickler normalerweise eine kleine Teilmenge — eine oder zwei Apps, eine Handvoll Bibliotheken.