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

Das Set-Operations-Problem

Operationen wie clone, fetch und gc mussen berechnen "welche Objekte sind von diesen Commits erreichbar?". Erreichbarkeits-Bitmaps speichern diese Antwort als komprimierte Bitmaps.

Generierung

git repack -adb
git multi-pack-index write --bitmap
git config repack.writeBitmaps true
git config pack.writeBitmaps true

Wie Server sie verwenden

Wenn ein Client klont, muss der Server alle erreichbaren Objekte aufzahlen. Mit Bitmaps ist das ein OR uber die Bitmaps aller Branch-Tips.

Pseudo-Merge-Bitmaps (Git 2.45+)

git config pack.writeBitmapPseudoMergeStable true
git config repack.writeBitmapHashCache true

Verifikation

ls .git/objects/pack/*.bitmap
git rev-list --use-bitmap-index --count --all
git rev-list --test-bitmap HEAD

Server vs Client

Bitmaps nutzen beiden Seiten, sind aber auf dem Server am wichtigsten.

Haufige Fehler

Bitmaps bei jedem gc auf kleinen Repos schreiben — Overhead kann den Nutzen ubersteigen.

Reale Zahlen

GitHub berichtete von 50-90% Reduktion der Klon-CPU nach Aktivierung von Bitmaps.