Inhaltsverzeichnis
04. Versionsverwaltung
- Themen
- Motivation: Warum Versionsverwaltung?
- Übersicht über verschiedene Versionsverwaltungssysteme
- Grundlegendes Arbeiten mit einer Versionsverwaltung
- Strukturierung von Arbeitsabläufen
- Folien
Zentrale Aspekte
- Versionsverwaltung wirkt sich befreiend auf die Softwareentwicklung aus.
- Versionsverwaltung ist essentiell, um jederzeit eindeutig
die verwendete Version einer Routine zu identifizieren. - Verteilte Versionsverwaltungssysteme erleichtern die Verwendung
und verringern externe Abhängigkeiten. - Für ein größeres Projekt sollte ein klarer Arbeitsablauf
festgelegt und konsequent befolgt werden. - Versionsverwaltung hat (neben automatisierten Tests)
den größten Einfluss auf die Art zu programmieren.
Arten von Versionsverwaltungssystemen
Versionsverwaltungssysteme lassen sich in drei Kategorien einteilen: lokal, zentral und dezentral (verteilt). Da die Schemata zwar in der Vorlesung gezeigt wurden, aber nicht vollständig in der oben verlinkten PDF-Version der Folien zur Vorlesung auftauchen, sind sie nachfolgend wiedergegeben.



Welches Versionsverwaltungssystem?
Die Frage lässt sich nicht allgemein beantworten. Aus der eigenen Erfahrung und im Kontext der Entwicklung von Software für die Datenauswertung im akademischen Kontext ist git eine sehr gute Wahl.
Wer seine Entwicklungen mit der Welt teilen und darüber hinaus viele weitere hilfreiche Infrastruktur rund um git nutzen möchte, dem sei GitHub empfohlen. Ein kostenloser Account erlaubt beliebig viele Repositories, die für jeden zumindest lesbar sind. Eine Alternative – auch zum selbst hosten – ist GitLab. Beide sind Web-Plattformen, die reichhaltige zusätzliche Funktionalität rund um git und eine komfortable Nutzerschnittstelle für die Arbeit mit git bieten.
Weiterführende Literatur/Links
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
git und Versionsverwaltung
Eine sehr gute Einführung in Versionsverwaltung allgemein und die Spezifika von git liefert das Pro Git book, das online frei verfügbar ist – sowohl als Webseite im HTML-Format als auch als PDF oder Ebook.
Struktur von Commit-Messages
Es erscheint ja nur wie eine kleine Sache, aber die Struktur und Gestaltung von Commit-Messages kann immensen Einfluss auf die Nutzbarkeit haben – ähnlich der Betreffzeile bei Emails, die idealerweise dem Empfänger sofort erlaubt, das Thema der Nachricht zu erfassen.
Spezifisch für git formuliert, aber in seinen Ideen weit darüber hinaus einsetzbar, gibt es im Blog von Tim Pope eine schöne Zusammenfassung:
Git-Arbeitsabläufe
Eine schöne Übersicht über unterschiedliche Arbeitsabläufe mit git findet sich bei den git-Tutorials von Atlassian: Comparing Workflows.
Der originale Blogpost für git flow von Vincent Driessen, A successful Git branching model, ist sicherlich lesenswert, egal ob man git flow am Ende einsetzen möchte oder nicht. Der große Vorteil von git flow ist die Unterstützung auf der Kommandozeile über entsprechende git-Erweiterungen.
Zwei beachtenswerte Alternativen zu git flow, die gleichzeitig auf die Schwierigkeiten mit git flow in manchem Kontext eingehen, sind github flow und gitlab flow.