Buch: "Version Control with Subversion - For Subversion 1.1"
Subversion habe ich bisher nicht benutzt, um einen Eindruck von dieser Versionsverwaltung zu bekommen habe ich mir Donnerstag und Freitag das Online-Buch "Version Control with Subversion - For Subversion 1.1" durchgelesen.
Versionsverwaltungssysteme wie CVS und Subversion werden insbesonders bei der Softwareentwicklung benutzt. Dabei wird am einem Ort, dem Repository, der Quelltext verwaltet auf dem alle Entwickler Zugriff haben. Das Besondere an Versionsverwaltungssystemen ist, dass sie sich alle Erweiterungen und Änderungen merken, die dort je gespeichert wurden. So kann jederzeit der Quelltext einer bestimmten Version oder eines bestimmten Tages/Zeitpunkts wieder hergestellt werden, falls man festgestellt hat, dass die neu hinzugefügten Programmteile der falsche Weg waren und man lieber dort weitermachen würde, wo man vor einer Woche war - eine Zeitmaschine als Software.
Branches - Zweige
Eine Besonderheit sind dabei Branches - Zweige. Die Beta-Version 1.0 der Software ist fertig und wird nun nur noch Bugfixes erhalten. Gleichzeitig möchte man aber schon mit den neuen Features der Version 2.0 beginnen. So legt man einen Zweig (eine Kopie) des Quelltextes an und baut dort die neuen Features ein, während die Version 1.0 weiterhin parallel dazu existiert und dort die Bugfixes vorgenommen werden.
merge-Befehl
Diese Bugfixes müssen natürlich dann auch in den Quelltext der Version 2.0 wandern. Dies unterstützen die Versionsverwaltungssysteme mit dem merge-Befehl. Mit diesem werden alle Änderungen, die man an der Version 1.0 in der Zwischenzeit durchgeführt hat, in die Version 2.0 übernommen. Oft geht dies vollkommen automatisch, da die Quelltexte der neuen und alten Version hinreichend ähnlich sind, so dass der Computer sie selbst verknüpfen kann. In Konfliktfällen gibt es Warnungen, die von den Entwicklern aufgelöst werden müssen. Das System zeigt dazu die Stellen an, an der sich der Quelltext der neuen und alten Version unterscheidet.
Auf diese Weise kann man natürlich auch jederzeit von der Version 2.0 einen weiteren Branch abzweigen, wenn z.B. einer der Entwickler etwas spezielles ausprobieren möchte, ohne dabei die Arbeit der anderen zu stören. Falls dabei etwas rauskommt, was alle anerkennen, können diese Änderungen per merge-Befehl in den Hauptzweig der Version 2.0 übernommen werden.
Nicht nur für Entwicklerteams
Dabei ist ein Versionsverwaltungssystem nicht nur für Entwicklerteams interessant. Auch einzelne Programmierer pflegen verschiedene Versionen ihrer Software und probieren immer mal wieder etwas aus, ohne sich sicher zu sein, ob dies in den Hauptzweig der Software passt. Mit einer Versionsverwaltung ist dies problemlos möglich, da man jederzeit wieder zu einer älteren, funktionierenden Version zurückkehren kann.
Außerdem können mit einem solchen System natürlich nicht nur Quelltexte, sondern alle Arten von Texten und Binärdaten verwaltet werden, so dass auch Autoren und Grafiker von einem solchen System profitieren, z.B. bei der gemeinsamen Entwicklung und Pflege einer Website oder eines Spiels.
Versionskonflikte lassen sich jedoch in der Regel nur bei reinen ASCII-Texten wie Quelltexten, HTML- oder TeX-Dokumenten auflösen - für das binäre Dateiformat einer Textverarbeitung würde eine speziellere Lösung benötigt werden. Aber unterschiedliche Grafiken auszuprobieren und davon dann die beste Variante zu nehmen, ist eine Sache die mit einem solchen System direkt geht.
Zum Buch
Das oben genannte Buch von Ben Collins-Sussman, Brian W. Fitzpatrick und C. Michael Pilato beschreibt sehr schön und anschaulich, was sich mit Subversion machen lässt, wie es zu bedienen ist und wie die Arbeitsabläufe aussehen, wenn ein Versionsverwaltungssystem eingesetzt wird. Dabei eignen sich die ersten vier Kapitel gut dazu, um sich auch allgemein einen Eindruck davon zu machen, was mit Versionsverwaltungssystemen möglich ist.
Und Subversion ist eine gute Alternative zu CVS. Die Syntax der Befehle ist ähnlich und es bietet mehr an Leistung. So wird das Unbenennen von Dateien und Verzeichnissen direkt unterstützt und auch Binärdaten werden platzschonend als Differenz gespeichert und übertragen.
Amiga
Subversion gibt es auch für den Amiga.