Das Problem des pfad-eingeschrankten Logs
git log -- path/to/file muss prinzipiell jeden Commit durchqueren und gegen seinen Vater diffen. Changed-path Bloom-Filter (Git 2.27+) beschleunigen dies dramatisch.
Wie Bloom-Filter funktionieren
Ein Bloom-Filter ist eine kleine Bitmap, die "definitiv nicht im Set" oder "wahrscheinlich im Set" fur Membership-Anfragen zuruckgibt.
Aktivieren
git commit-graph write --reachable --changed-paths
git config commitGraph.changedPathsVersion 2
git maintenance run --task=commit-graph
Verifizieren
GIT_TRACE2_PERF=1 git log -- src/foo.c 2>&1 | grep -i bloom
git commit-graph verify
Wann es glanzt
- Lange laufende Monorepos mit vielen Commits, die nur wenige Dateien beruhren.
git log -- src/specific/dirAnfragen.git blameauf einzelnen Dateien.
Wann es nicht hilft
- Glob/Regex-Pfade.
- Logs ohne
--Pfad-Argument. - Sehr kleine Repos.
Speicher und Disk
git config commitGraph.maxNewFilters 50000
Haufige Fehler
Den Graphen ohne --changed-paths schreiben.