Zeigt die Commit-Größe in git log an

8

Wie kann ich die Commit-Größe in der Ausgabe von git log anzeigen?

Sie können commit size als das Diff zwischen seinen Eltern und sich selbst oder etwas Vernünftiges verstehen, das Ihnen sagt, wie groß das Commit ist.

git log hat eine Option --log-size , aber es ist die Größe der Log-Nachricht, nicht das Commit selbst.

    
Cyker 19.11.2016, 20:37
quelle

1 Antwort

8

Die "Größe" eines Commits kann verschiedene Dinge bedeuten. Wenn Sie meinen, wie viel Plattenspeicher es braucht ... ist das in Git sehr schwierig zu sagen und wahrscheinlich unproduktiv. Während etwas wie SVN speichert als Deltas Commit, wenn Sie eine Datei in Git ändern, speichert es eine neue Kopie der Datei als ein Objekt in einer Grafik-Datenbank. Ein Objekt kann in vielen Commits geteilt werden. Während dies ineffizient klingen mag, hat Git viele clevere Möglichkeiten, Festplattenspeicher erschütternd effizient zu nutzen.

Wenn Sie meinen, wie viele Zeilen sich geändert haben, ist das ganz einfach. Sie können verschiedene Flags verwenden, um zu ermitteln, wie viele Dateien und Zeilen geändert wurden. Die meisten haben das Wort "stat". Beispiel: git log --shortstat teilt Ihnen mit, wie viele Dateien geändert wurden und wie viele Zeilen eingefügt und gelöscht wurden. Hier ist ein Beispiel.

%Vor%

Wenn Sie eine Vorstellung davon haben möchten, welchen Plattenspeicher der Commit darstellt, müssen Sie die IDs der neuen Dateien (Blob-Objekte), die der Commit erstellt hat, ermitteln und dann deren Größe überprüfen. Sie können sie in git log -p sehen.

%Vor%

index 1d539bd..538440f 100644 zeigt dieses ersetzte Blob-Objekt (Datei) 1d539bd mit 538440f an und verwendet die Berechtigungen 0644. Wenn Sie git cat-file -s 538440f ausführen, teilt es mir mit, dass das Objekt 4356 Bytes groß ist. Das ist die unkomprimierte Größe. Auf der Festplatte sind es nur 1849 Bytes.

%Vor%

Nach I git gc ist sogar die Objektdatei verschwunden. Jetzt ist alles in einer Packdatei mit weniger als 10K.

%Vor%

Diese Antwort zeigt, wie die Blobs von einem Commit auf eine automatisierte Art und Weise abgerufen werden können.

    
Schwern 19.11.2016, 22:18
quelle

Tags und Links