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.
![](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/6/6/3/5/3/8/shutterstock_1074163856-30e2fe381483846f.jpeg)
(Bild: Andrey Armyagov/Shutterstock.com)
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.
Gezielter Überblick im Projekt verschaffen
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.
Mehr Sicherheit beim Entfernen von Objekten
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)