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: