Als Informatiker beziehungsweise als Anwendungsentwickler sollte man die Begriffe Git und SVN beide kennen. Aber warum sollte man überhaupt eine Versionskontrolle benutzten? Und was ist eine Versionskontrolle überhaupt?
Genau um dieses Theme geht es jetzt.
Versionskontrolle
Versionskontrollsysteme (VCS) protokollieren sämtliche Änderungen die an einer oder mehreren Dateien, sowie Ordnerstrukturen über eine länger Zeit hinweg geändert wurden. Das heißt das der Zustand der Dateien bzw. Ordner Rückverfolgbar und Wiederherstellbar ist.
Wenn man zum Beispiel in die „falsche Richtung“ Programmiert hat oder Mist gebaut hat kann man einfach und schnell auf eine ältere Version zurück springen.
Viele Leute Versionieren ihre Werke einfach mit mehreren Ordnern, es wird also für jede Version ein neue Ordner angelegt. Allerdings haben Programmierer dieses Verfahren erleichtert und sicherer gemacht indem sie ein VCS entwickelt haben, welches alle relevanten Änderungen in einer Datenbank speichert.
Zentralisierte Versionskontrolle
Nun stellt sich natürlich die Frage, was ist wenn man im Team arbeitet und bis jetzt die Lösung der Ordner Struktur zum Beispiel per FTP abbildet?
Auch dieses Problem haben Programmierer schon vor längerer Zeit erkannt und behoben. Die Lösung ist eine Zentralisierte Versionskontrolle (CVCS), ein Beispiele wäre zum Beispiel Subversion. Dabei werden die Dateien auf einem Zentrallen Server gespeichert und müssen zum Bearbeiten erst per „checkout“ vom Server geholt werden und nach der Bearbeitung „commited“ werden.
Durch diese Lösung ist der Wissenstand darüber wer etwas an einem Projekt macht mehr oder weniger gegeben. Es wird genauestens protokolliert wer welche Änderungen an einer Dateien durchgeführt hat. Auch kann aber fest gelegt werden wer Dateien ändern darf und welche.
Probleme ergeben sich bei dem Verfahren besonders wenn keine Internetverbindung zum Zentralen Server verfügbar ist oder der Server aus anderen Gründen nicht erreichbar ist.
Verteilte Versionskontrolle
Nun kommen wir zum wirklich interessanten Teil der Versionskontroll Entwicklung, es kommt die verteilte Versionskontrolle (DVCS) ins Spiel. DVCS sind zum Beispiel Git oder Mercurial. Mit DVCS erhält der Anwender nicht nur einen bzw. den letzten Snapshot, sondern eine vollständige Kopie des Repository.
Dadurch ist es auch möglich zu arbeiten wenn der Server ausfällt oder keine Verbindung möglich ist. Auch kann so das Repository wieder hergestellt werden wenn es einen Totalausfall mit Datenverlusten gab.
Weiterhin ist es möglich mit verschiedenen externen Repositories zu arbeiten und somit simultan mit anderen zusammenarbeiten zu könne.
Somit ist es auch möglich zum Beispiel Hierarchien zu bilden was mit CVCS nicht möglich ist.