Programmieren mit Geschichte

Keywan Tonekaboni

Ein neues Projekt hier, ein Geistesblitz da, und schon stehen die ersten Zeilen Programmcode. Wer kreativ programmiert, legt gerne einfach mal los. Doch manchmal vermisst man die gute Lösung vom Vortag, die man im Eifer des Gefechts verworfen hat. Mit einer Software für die Versionsverwaltung bringt man Ordnung in die eigenen Quelltexte, ohne seine Kreativität zügeln zu müssen. Ein Backup gibt es gleich mit dazu und andere Mitstreiter ins Projekt einzubinden, ist auch ein Kinderspiel.

Programmieren verläuft selten nach einem Masterplan. Vieles geschieht nach dem Prinzip Trial-and-Error. Das ist auch kein Problem, solange man den Überblick behält. Nicht selten geschieht es, dass man dabei eine Methode oder Funktion löscht und später merkt: Das war doch besser als die aktuelle Version. Oder schlimmer, gestern startete die Anwendung noch, heute aber nicht mehr und der Übeltäter ist im Quelltext nicht aufzufinden. Bei all diesen Problemen hilft eine Versionsverwaltung oder Software zur Versionskontrolle, im englischen auch Version Control System oder kurz VCS genannt.

Solche Software kommt bereits seit den Anfängen der Programmierung in den Siebzigern zum Einsatz. Auch wenn mit RCS (Revision Control System) einer der ältesten Haudegen aktiv bis heute weiterentwickelt wird, sind Funktionen und Fähigkeiten moderner Systeme wie Subversion, Git oder Mercurial deutlich ausgefeilter. Liefen sie zunächst nur lokal, gab es schnell auch netzwerkfähige Server-Varianten.

Das Funktionsprinzip ist aber bei allen Systemen ähnlich. Zu Beginn wird eine neue Datei in das System eingetragen. Nach jeder Änderung meldet man diese dem System, das darüber ein Protokoll führt. Gefällt einem die aktuelle Variante nicht, kann man in den vorherigen Änderungen stöbern. Dabei hebt ein sogenannter “Diff” die Unterschiede zwischen alter und neuer Version hervor. Ältere Versionen kann man aus dem Protokoll wiederherstellen. Arbeitet man an mehreren Rechnern, lässt sich mit einem Befehl der letzte Arbeitsstand synchronisieren.

Vor allem wer gemeinsam mit Anderen programmiert, sollte unbedingt eine Versionskontrolle einsetzen. Denn wenn man gleichzeitig an einer Datei arbeitet, versucht die Software die Änderungen aller Beteiligten zu erhalten. Es gewinnt also nicht, wer zuletzt speichert, sondern alle Bearbeitungen werden integriert. Das klappt auch überraschend gut, wenn man beispielsweise selbst am Anfang des Quelltextes hantiert hat, während der Team-Kollege am Ende zu Werke war. Und war man mal an der gleichen Stelle zugange, meldet die Versionskontrolle den Konflikt. Dann kann man selber entscheiden, welche Änderungen erhalten bleiben sollen.

Doch wie tauscht man die Daten aus? Die übliche Art ist über einen Server, der die entsprechende Software installiert hat. Einfacher geht es mit Webdiensten wie Github oder Bitbucket. Die bieten kostenlosen Speicherplatz mit Versionskontrolle und weitere Tools wie ein Wiki oder eine Fehlerverwaltung (Bugtracker). Gleichzeitig kann man die Projekte anderer durchstöbern, kopieren und anpassen. Die Verbesserungsvorschläge kann man dann einreichen. Dem ursprünglichen Autor werden die entsprechenden Quelltext-Passagen übersichtlich angezeigt. Mit einem Mausklick kann er oder sie diese akzeptieren oder ablehnen. Social Coding heißt das passende Buzzword. Wer aber sein Projekt nicht mit der Öffentlichkeit teilen will, muss das auch nicht. Für private Projekte benötigt man aber je nach Anbieter (z.B. Github) einen kostenpflichtigen Account.

Möchte man während einer längeren Zugfahrt oder in einer einsamen Berghütte ohne Internet coden, empfehlen sich verteilte Systeme. Die sind seit einigen Jahren populär und benötigen nicht zwingend einen zentralen Server. In diesem Fall verwaltet die lokale Version, beispielsweise auf dem Laptop, alle Änderungen wie gehabt. Ist eine Internetverbindung vorhanden, schiebt man die angefallenen Änderungen in einem Rutsch auf den Server. Genauso holt man sich die Änderungen der anderen auf den eigenen Rechner. Dabei enthält jede Kopie – also auf jedem Laptop, PC und Server – immer alle Änderungen seit dem ersten Eintrag und es stehen einem jederzeit alle Daten zur Verfügung – auch ohne Internet oder wenn der Server mal abgeraucht ist. Das derzeit populärste verteilte VCS ist Git und wird von den meisten Social Coding Plattformen unterstützt.

Ganz egal, ob nur lokal, auf dem Projekt-Server oder gleich in der Social Coding-Plattform: Wer Software entwickelt, sollte schon mit dem ersten “Hello World” eine Versionskontrolle verwenden. Es macht Spaß und hält einem die meisten Sorgen vom Hals. Übrigens: Nicht nur Quellcode, sondern auch Texte wie dieser fühlen sich in der Versionsverwaltung wohl.

Keywan berichtet als Technik-Journalist über die Open Source-Szene und neueste IT-Forschung im Radio und in Online-Medien. Er studiert Medienwissenschaften in Bielefeld und ist überzeugter Linux-Anwender.

Eine Einführung in Git gibt es hier. Das Buch “Pro Git” ist hier frei verfügbar.

Rückmeldungen