Was ist Versionsverwaltung?
Versionsverwaltungssysteme ermöglichen das Festhalten von Änderungen an textbasierten Dateien inklusive Kommentar. Bei der schrittweisen Entwicklung eines Projekts erlauben sie somit das gezielte Zurückkehren zu jedem vorherigen Zustand. Bei der Softwareentwicklung gehören sie zu den wichtigsten Werkzeugen, da sie die Fehlerauffindung und das gemeinsame Arbeiten stark vereinfachen.
Warum brauche ich eine Versionsverwaltung?
Angenommen ein Projekt wird ohne Versionsverwaltung umgesetzt und es gibt einen Fehler. Zur Behebung dieses Fehlers machst du Änderungen am Code des Projekts und, wie so oft, musst du verschiedene Ansätze ausprobieren, bis du den richtigen Fix findest. Du stellst dabei irgendwann fest, dass nun etwas anderes nicht mehr funktioniert, weil du vor dem Beginn eines neuen Ansatzes den vorherigen nicht komplett rückgängig gemacht hast und irgendetwas vergessen hast, was genau jetzt Auswirkungen auf deinen neuen Ansatz hat. Und das Ganze geht immer weiter; je mehr Änderungen du machst, desto schlimmer wird es, bis das Projekt irgendwann gar nicht mehr funktioniert.
Mithilfe eines Versionskontrollsystems kannst du nach jedem Ansatz praktisch mit einem Klick zum vorigen Stand zurückkehren. Außerdem solltest du jeden erfolgreichen Ansatz mit einem Kommentar versehen abspeichern (ein sogenannter Commit), wodurch du den neuen Stand zum Zurückkehren markierst die noch weiter zurückliegenden Stände sind auch alle weiterhin verfügbar (in der sogenannten History).
Ganz vom obigen Beispiel abgesehen erschließt es sich außerdem leicht, warum kommentiert gespeicherte Zustände, zu denen man jederzeit zurückkehren kann und deren Änderungen man auch sehen kann (Commit Changes), das gemeinsame Arbeiten erleichtern. Versionskontrollsysteme haben außerdem stets eine Funktion, mithilfe der sie mehrere Commits zu einem gemeinsamen Ergebnis zusammenführen können (ein sogenannter Merge). Jeder kann also getrennt arbeiten, seine Arbeit commiten und am Ende kann alles ohne großen Aufwand zusammengeführt werden (sofern nicht an derselben Stelle gearbeitet wurde). Das spart viel Zeit und Nerven.
Welches Versionsverwaltungssystem sollte ich nutzen?
Meist begegnet man SVN, Git oder Mercurial.
Es gibt verschiedene Versionsverwaltungssysteme mit unterschiedlichen Zielen sowie Vor- und Nachteilen. Die bei der Softwareentwicklung heutzutage am meisten verbreiteten sind Subversion (kurz SVN), Git und Mercurial. Allen 3 gemein ist, dass die Daten auf einem Server gehostet werden, um so mehreren Nutzern Zugriff auf die Daten zu bieten. SVN gilt dabei als veraltet, da es sich noch um ein zentral verwaltetes Versionskontrollsystem handelt, und man Änderungen am Projekt direkt auf den Server merged. Git und Mercurial sind dezentrale Versionskontrollsysteme, die das getrennte Arbeiten und Verwalten von Projekten durch den Einsatz lokaler Arbeitskopien deutlich verbessern. So hat man auch offline Zugriff auf alle Daten und ist nicht durchwegs auf eine Internetverbindung angewiesen, um am Projekt zu arbeiten. Da die lokale Kopie nicht automatisch auf den Stand des serverseitigen Originals synchronisiert wird, muss man dies manuell erledigen. (Dazu später mehr.)
Funktional sind Git und Mercurial miteinander für die üblichen Projektzwecke durchaus vergleichbar, jedoch stand hinter Git (vor allem aus historischen Gründen) stets eine deutlich größere Community, sodass Git mit der Zeit immer mehr zum dominierenden Versionskontrollsystem aufgestiegen ist. Die starke Verbreitung, die vielen verfügbaren Werkzeuge und die Unterstützung auf vielen Plattformen zur Projektverwaltung machen die Entscheidung sehr leicht: Git ist das Versionsverwaltungssystem der Wahl.
Bild: Fotolia - 110738629