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

fast-export und fast-import

git fast-export serialisiert ein Repository in einen Strom von Befehlen; git fast-import rekonstruiert ein Repository aus einem. Zusammen bilden sie das Datenaustausch-Protokoll von Git.

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

Das Cross-Fork-Problem

Forge-Server (GitHub, GitLab) hosten viele Forks eines Repos zusammen. Naiv komprimiert ein einzelnes Packfile Deltas uber alle Forks — effizient auf Disk, aber ineffizient beim Servieren eines einzelnen Forks. Delta-Inseln beschranken Delta-Ketten so, dass die Ketten jedes Forks innerhalb seines eigenen Objekt-Sets bleiben.

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

Die Transportschicht

Git's Wire-Protokoll verschachtelt historisch Client- und Server-Nachrichten uber eine zustandsbehaftete Verbindung. stateless-connect (eingefuhrt fur Protokoll v2 uber HTTP) entkoppelt Anfragen, sodass jede unabhangig routbar ist.

Stateless-Flows

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

HTTP/2-Vorteile

HTTP/2-Multiplexing erlaubt mehreren Stateless-Anfragen, eine Verbindung zu teilen.

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

Warum v2

Protokoll v0/v1 sandte die vollstandige Ref-Werbung des Servers zu Beginn jedes Fetches — eine Nutzlast proportional zur Anzahl der Refs. Auf Repos mit Zehntausenden von Refs dominierte dies die Transferzeit. Protokoll v2 (Standard ab Git 2.26+) erlaubt dem Client, spezifische Refs nach Namen anzufordern.

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

Zwei Parallelitats-Gewinne

Zwei Einstellungen schalten signifikante Speedups fur Alltagsoperationen frei. core.preloadIndex parallelisiert die lstat-Aufrufe, die git status macht; paralleler Checkout (Git 2.32+) parallelisiert die Datei-Schreibvorgange wahrend git checkout, git switch und git restore.

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

Repack-Budgets

Wenn Git Deltas wahrend des Repacks berechnet, betrachtet es ein Fenster von Kandidaten-Basisobjekten pro Ziel. Grossere Fenster produzieren kleinere Packs, verwenden aber mehr Speicher und CPU.