Gource – Evolution von Software

Gource ist ein Open-Source Tool zur Visualisierung von Logdateien gängiger Versionierungssysteme wie SVN, CVS und natürlich Git. Aber auch andere Daten wie die Medaillenverteilung der Olympischen Spiele können dargestellt werden.

Aber bleiben wir bei Git, dem populärsten Versionierungsmanagement. Im Prinzip parst Gource die Logdatei in einem beliebigen Git Repository und rendert in Echtzeit eine Baumstruktur aus den enthaltenen Ordner und Dateien die in jedem Commit geändert oder hinzugefügt wurden. Gerade wenn man in Teams arbeitet, kann man sehr gut sehen, wie die einzelenen Teammitglieder am Wachsen des Baumes beteiligt sind. Die Linux Kernel Development Visualization zeigt das ganz gut.

Die Ausgabe von Gource erfolgt in Echtzeit auf dem Bildschirm und kann entweder mit einem Screenrecorder aufgenommen werden oder in eine Datei gerendert werden.

Beim Schreiben in eine Datei muss man beachtet, dass unkomprimierte Bildsequenzen erstellt werden. Je nach (Fehl)-Konfiguration kann man mit einer 10 GB Datei auf der Festplatte enden.

Mit der nachfolgenden Batchdatei bekomme ich aus kleineren Repositories eine 1,5 GB große Dateien heraus, die ich mit ffmpeg auf eine annehmbare Größe komprimiere.

@echo off

set project=E:\\WEB\\Projektordner

echo --camera-mode (overview,track)
set cameraMode=overview

set gourceBin="C:\Program Files (x86)\Gource\gource.exe"

rem ffmpeg Qualitaet 0=lossless, 18=very good
set quality=14

%gourceBin% ^
-1280x720 ^
--seconds-per-day .05 ^
--auto-skip-seconds .1 ^
-multi-sampling ^
--stop-at-end ^
--highlight-users ^
--camera-mode %cameraMode% ^
--hide mouse,progress,filenames ^
--file-idle-time 0 ^
--max-files 0 ^
--background-colour 000000 ^
--output-ppm-stream - ^
--output-framerate 25 ^
-o gource.ppm %project%

ffmpeg ^
-y ^
-r 25 ^
-f image2pipe ^
-vcodec ppm ^
-i gource.ppm ^
-vcodec libx264 ^
-preset medium ^
-crf %quality% ^
-threads 0 ^
-bf 0 ^
%project%.mp4

del /f gource.ppm

pause

Alternativ kann man die Konfiguration auch in eine .ini Datei schreiben.

[display]
output-ppm-stream=gource.ppm
output-framerate=25
multi-sampling=true
viewport=1024x600
fullscreen=true

[gource]
seconds-per-day=0.39
title=Lections
user-image-dir=.git/avatar/
background-colour=252525
key=true
bloom-intensity=1
gource.exe --load-config conf.ini
rem ffmpeg here...

Da Gource so flexibel ist, kommt man nicht darum herum mit den Parametern zu experimentieren. Am wichtigsten ist es, die Momente in der Timeline zu überspringen, an denen nichts passiert. Das geschieht mit dem Parameter --auto-skip-seconds der auf 0.1 gesetzt werden sollte. Geschieht innerhalb von 0,1 Sekunden nichts wird der Tag übersprungen. Der Paramter seconds-per-day stellt die Geschwindigkeit der Simulation ein. 0.5 bis 1 Sekunde sind gute Werte, um das Geschehen noch mitverfolgen zu können. Ein Tag sind also X Sekunden.

Alle Elemente können mit dem --hide Parameter ein- oder ausgeblendet werden. Ich blende Dateinamen aus, weil es, gerade wenn man externe Bibliotheken mit hunderten von Dateien in einer Anwendung einfügt, auf dem Bildschirm nur ein weisser Blob aufblitzt.

Am besten studiert man alle Kommandozeilen Parameter und probiert etwas herum.

Und der Sinn des Ganzen? Ablenkung um ja nicht mit den wirklich wichtigen Projekten anzufangen.

Nachfolgend noch ein paar Fallbeispiele und Informationen: