Versionskontrolle

 

In der beruflichen Softwareentwicklung ist die Benutzung einer Systems zur Versionskontrolle der Software unabdingbar. Aber auch bei der Realisierung von Astrosoftware kann ein Tool zur Versionskontrolle wertvolle Dienste leisten. Aus diesem Grunde möchte ich gerne ein paar Worte zu diesem Thema verlieren. Wer beruflich mit Software zu tun hat, wird in diesem Zirkular vielleicht nicht viel Neues erfahren und kann sich damit begnügen, diese Ausgabe einfach nur "querzulesen".

Was ist Versionskontrolle?

Eine Versionskontrolle hat den Zweck, sämtliche Änderungen an den Quelltextdateien im Laufe der Entwicklung einer Software nachvollziehbar zu gestalten. Die Quelltexte werden in einer Datenbank, meist Repository genannt, abgespeichert. Ein Programmierer legt jede sinnvolle Änderung an seinen Quelltexten in dieser Datenbank ab; dieser Vorgang wird bei vielen Tools "einchecken" genannt. Auf diese Weise werden die Änderungen und somit der komplette Entwicklungsweg einer Software einsehbar.

Wozu Versionskontrolle?

Die Motive für den Einsatz einer Versionskontrolle sind vielfältig:
Es kann jederzeit sicher und komfortabel zu einem beliebigen älteren Stand zurückgegangen werden, z.B. wenn die letzte Änderung ein Versehen war oder um Fehler einzukreisen.
Es kann jederzeit relativ einfach der letzte Stand wiederhergestellt werden. Dies verschafft dem Entwickler die Möglichkeit, mit hoher Selbstsicherheit schnell mal etwas auszuprobieren, ohne den funktionierenden Softwarestand zu beeinträchtigen.
Jede Änderung kann mit einem aussagekräftigen Kommentar versehen werden.
Mit einem Repository auf einem Server oder Rechner, der nicht der Arbeitsplatzrechner ist, besitzt man zudem ein Backup der Quelltexte.
Arbeiten mehrere Programmierer an einem Projekt, so kann sich jeder einzelne von ihnen die Änderungen der übrigen Mitarbeiter abholen, sofern diese eingecheckt wurden. Die Koordinierung der Arbeit mehrerer Entwickler ist das eigentliche Hauptanliegen einer Versionskontrolle.

Für wen ist Versionskontrolle sinnvoll?

Um einfach nur kurz ein kleines Hilfsprogramm oder Skript herunterzurasseln ist sicher keine Versionskontrolle erforderlich. Für die Entwicklung größerer Softwareprojekte, an denen man sechs Monate oder gar mehrere Jahre arbeitet, kann Versionskontrolle einen erheblichen Gewinn an Sicherheit in der Entwicklung bedeuten. Programme wie Giotto und Eye & Telescope, die von Amateurastronomen geschrieben worden sind, sind mit hoher Wahrscheinlichkeit unter Einsatz eines Versionstools entstanden.

Welche Vorteile bietet Versionskontrolle gegenüber anderen Ansätzen?


Selbstverständlich lassen sich Softwarestände auch per Skript, per Tool oder auch händisch in Verzeichnisse kopieren, jedoch wirkt diese Vorgehensweise geradezu rudimentär, wenn nicht gar steinzeitlich: Man bekommt für jeden Zwischenstand eine komplette Kopie des Arbeitsverzeichnisses, während ein Versionskontrolltool die Quelltexte nur einmal und hernach nur die Änderungen an ihnen abspeichert. Zum Anderen ist damit das Problem der Kommentierung der Änderungen nicht gelöst. Außerdem muss man sich selbst vergewissern, ob die Kopieroperation erfolgreich war. Ein Backup ist halt noch keine Versionskontrolle.

Welche Versionskontrolltools gibt es?

Professionelle Tools wie PTC Integrity (vormals MKS) oder ClearCase sind alles andere als preisgünstig. Kostenlose Alternativen sind beispielsweise Subversion (Windows, Linux) oder Git (Linux). Für Subversion, oder auch kurz SVN, gibt es unter Windows einen Client namens Tortoise, welcher sich in den Explorer eingliedert.

Zurückkopieren zur Sicherheit


Wenn man mit einer Versionskontrolle arbeitet, sollte man sich hin und wieder die Zeit nehmen und die Probe aufs Exempel machen: Kann aus dem Abbild der Quelltexte im Repository eine lauffähige Software generiert werden? Hierzu kann z.B. der Quelltextbestand aus dem Repository geholt und in ein leeres Verzeichnis geschrieben werden. Wenn dieser Stand compiliert werden kann und funktioniert, so ist damit die Vollständigkeit des Abbildes gewährleistet. Diese Betrachtung gilt für Backups natürlich analog.