Versionsverwaltung: Git 2.39 formatiert Logs für fokussierte Einblicke

Auf der Kommandozeile stellt das neue Git-Release mehr Optionen für die formatierte Ausgabe von Logdaten mit dem Befehl git shortlog bereit.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen

(Bild: Andrey Armyagov/Shutterstock.com)

Lesezeit: 3 Min.

Das Git-Entwicklungsteam hat Version 2.39 der Quellcode-Versionsverwaltung vorgelegt. Unter den Neuerungen im Release finden sich unter anderem flexiblere Optionen, um die Ausgabe von git shortlog individuell anzupassen, und für den Umgang mit Objekten, die im Zuge der Garbage Collection aus dem Repository entfernt wurden.

Während sich Entwicklerinnen und Entwickler mit git log auf der Kommandozeile einen vollständigen Überblick über den Stand ihrer Projekte verschaffen können, bietet der Befehl git shortlog die Möglichkeit, die Ausgabe gezielter zu filtern. Mit der Freigabe von Git 2.39 gestalten sich die Optionen noch flexibler: Commits lassen sich nun auf der Grundlage beliebiger Formatierungsangaben zusammenzufassen, wie sie im Abschnitt Pretty Formats in der Git-Dokumentation aufgeführt sind.

Eine Aufstellung der pro Monat eingereichten Commits beispielsweise erforderte bisher den recht komplexen Befehl:

$ git log v2.38.0.. --date='format:%Y-%m' \
--format='%cd' | sort | uniq -c

Die gleiche Abfrage gestaltet sich nun deutlich einfacher:

$ git shortlog v2.38.0.. --date='format:%Y-%m' --group='%cd' -s
     2  2022-08
    47  2022-09
   405  2022-10
   194  2022-11
     5  2022-12

Hierbei genügt die Option -s, um git shortlog anzuweisen, in der linken Spalte die Anzahl der einer eindeutigen Gruppe (Jahr und Monat) zugeordneten Commits auszugeben. Die Identität der Gruppe findet sich jeweils in der rechten Spalte. Für die --group-Option lassen sich sämtliche Pretty Formats nutzen.

Seit dem Release 2.37 stehen Entwicklerinnen und Entwicklern cruft-packs zur Verfügung, mit denen sich unerreichbare Objekte im Rahmen der Garbage Collection zusammen in einer einzigen Packdatei speichern lassen. Dabei werden die Altersangaben der einzelnen Objekte in eine Hilfstabelle geschrieben, die sich in einer *.mtimes-Datei zusätzlich zum Pack speichern lässt. Mit dem --prune=<date>-Mechanismus kann den Objekten eine "Gnadenfrist" bis zu ihrem endgültigen Entfernen aus dem Projektarchiv zugeordnet werden. Dieses Vorgehen hat sich nach Einschätzung des Git-Entwicklungsteams zwar als effektiv erwiesen, es sei aber nicht narrensicher. Daher bietet git repack ab Release 2.39 die neue Option --expire-to, mit der sich externe Kopien von Objekten erstellen lassen, die aus dem Repository entfernt wurden.

Der Befehl

$ git repack --cruft --cruft-expiration=5.minutes.ago \
-d --expire-to=../backup.git

packt beispielsweise alle unerreichbaren Objekte, die in den letzten fünf Minuten nicht verändert wurden, gemeinsam in ein Packfile in ../backup.git. Entwicklerinnen und Entwicklern, die im Nachgang der Garbage Collection Objekte vermissen sollten, können diese aus dem Backup wiederherstellen.

Mehr Details zu den wichtigsten Änderungen in Git 2.39 liefert der Blogbeitrag zur Freigabe der neuen Version. Einen kompletten Überblick finden Interessierte in den Release Notes im GitHub-Repo.

(map)