Ich lerne “Baum” und “Index” aus diesem Artikel: Lernen von Git-Interna am Beispiel
Aber wenn es um den Befehl “git filter-branch” geht, weiß ich nicht, was der Unterschied zwischen “–tree-filter” und “–index-filter” ist.
Ich lerne “Baum” und “Index” aus diesem Artikel: Lernen von Git-Interna am Beispiel
Aber wenn es um den Befehl “git filter-branch” geht, weiß ich nicht, was der Unterschied zwischen “–tree-filter” und “–index-filter” ist.
Die Kurzfassung ist das --tree-filter
checkt jeden Commit in ein temporäres Verzeichnis aus, führt Ihren Filterbefehl aus und erstellt einen neuen Commit aus dem, was sich jetzt im temporären Verzeichnis befindet; während --index-filter
kopiert jeden Commit in den Index, führt Ihren Filterbefehl aus und erstellt einen neuen Commit aus dem, was sich jetzt im Index befindet.
Das Kopieren eines Commits in den Index ist viel1 schneller als das Auschecken des Commit. Das Erstellen eines Commit aus dem Index ist schneller als das Erstellen eines Commit aus einem Verzeichnis. Daher ist die Verwendung des Indexfilters viel schneller als die Verwendung des Baumfilters. Es ist jedoch nicht so einfach, ein Skript dafür zu erstellen.
1Der genaue Geschwindigkeitsunterschied hängt von Ihrem temporären Verzeichnis ab: Ein In-Memory-Dateisystem ist schneller als ein Dateisystem auf einer SSD, das schneller ist als ein sich drehendes Medium, sodass Sie mehr gewinnen, wenn Sie sich drehende Medien verwenden, als wenn Sie könnten Verweisen Sie den Baumfilter auf ein In-Memory-Dateisystem. Aber auch dann ist der Indexfilter noch schneller.
Auf tatsächlichen Festplatten habe ich ungefähr einen Faktor von 100 oder so gesehen (daher entspricht ein Indexfilter, der 2 Minuten dauert, einem Baumfilter, der mehr als 3 Stunden dauert).
Erstaunliche zusätzliche Recherche dort @torek, kann dieses Zeug nicht lernen, indem man nur die Dokumente liest!
– timhc22
24. Februar um 2:51 Uhr
@timhc22: Ich gehe hier von einigen historischen Werten aus. Mitte der 200er oder frühen 201er Jahre habe ich viele Repository-Operationen durchgeführt. Musste eine Zeit lang echte rotierende Medien verwenden, hatte dann ein Ramdisk-Dateisystem, das ich später für einiges davon verwenden konnte …
– Torek
24. Februar um 10:54 Uhr
Hast du die gelesen Dokumentation ?
– Tim Biegeleisen
28. März 2016 um 2:58 Uhr
@TimBiegeleisen Das tue ich, aber ich finde, dass dieses Git-Konzept schwer zu verstehen ist …
– Zum Seitenanfang
28. März 2016 um 3:13 Uhr
Man liest nicht einfach die Doku @TimBiegeleisen! Es gibt Abzeichen zu gewinnen! (Toller Name übrigens 😉 )
– timhc22
24. Februar um 2:48 Uhr