Mit Versionsverwaltungssystemen können Änderungen an Dokumenten oder Dateien erfasst werden. Entstehen durch Bearbeitung neue Versionen, werden diese zusammen mit einem Zeitstempel und Benutzerkennung in einem Archiv gespeichert, sodass frühere Arbeitsstände jederzeit abgerufen und wiederhergestellt werden können. So lassen sich Änderungen von Usern an Dateien jederzeit zurückverfolgen. Typischerweise werden diese Systeme in der Softwareentwicklung oder auch im Content-Management eingesetzt. Zu den bekanntesten Systemen zählen Git und Apache Subversion (SVN).
Aber was ist eigentlich der Unterschied zwischen Git und SVN?
Zunächst einmal sind beides Version Control Systeme (VCS) und helfen somit beim Projekt- und Workflowmanagement. Der größte Unterschied zwischen beiden Systemen besteht wohl darin, dass SVN (Subversion) ein zentralisiertes Versionskontrollsystem ist und Git ein verteiltes Versionskontrollsystem. Beide Programme unterscheiden sich somit grundsätzlich in ihrer Architektur. In verteilten Versionskontrollsystemen hat jeder Entwickler seine eigene lokale Kopie des gesamten Versionsverlauf. In zentralen Systemen wird hingegen alles auf einem zentralen Server gespeichert.
Bei SVN existiert also ein zentrales
Verzeichnis (Repository), auf das alle User zugreifen. Sobald ein User eine
Datei aufruft um Änderungen durchzuführen, wird ihm diese Datei vom System
zugewiesen und für alle weiteren User während der Bearbeitungsdauer gesperrt
(Schreibschutz). Hier geht Git einen komplett anderen Weg. Zwar existiert auch
bei Git ein zentrales Repository in welches Änderungen einfließen, da jeder
User jedoch in seiner eigenen lokalen Kopie des Repository arbeitet, können
auch mehrere Personen an der gleichen Datei arbeiten. Bei der Synchronisation
und dem Zusammenführen von Änderungen unterstützt Git die User anschließend.
Durch die lokale Verwaltung ist bei Git -im Gegensatz zu SVN- keine stetige Netzwerkverbindung
notwendig. Dateien können offline bearbeitet werden, eine Verbindung zum
Projektserver wird dann lediglich für die Synchronisation benötigt
Beide Systeme unterscheiden sich auch in der
Verwaltung von Zugriffsrechten. Bei Git haben standardmäßig alle Mitglieder
eines Projektteams die gleichen Rechte. SVN ermöglicht dagegen die individuelle
Vergabe von Lese- und Schreiberechte auf unterschiedlichen Ebenen wie einzelnen
Dateien oder kompletten Verzeichnissen.
Auch die Usability ist bei beiden Programmen verschieden. Obwohl das User
Interface -sowohl bei Git als auch bei SVN- auf einer Kommandozeile beruhen, gilt
SVN als leichter zu erlernen. Da insbesondre die Syntax von Git für Anfänger
und Personen ohne technisches Vorwissen als schwerer zu verstehen gilt.
Welches System ist nun besser? Eine pauschale Antwort auf die Frage gibt es nicht. Je nach Verwendungszweck ist eher das eine oder das andere besser geeignet. Die nachfolgende Tabelle gibt nochmal eine kurze Übersicht über die wichtigsten Merkmale:
Git | SVN | |
Versionsverwaltung | Verteilt | Zentral |
Repository | Lokale Kopien des Repository für jeden Anwender | Ein zentrales Repository |
Netzwerkanbindung | Nur für Synchronisation | Bei jedem Zugriff erforderlich |
Zugangsberechtigung | Für gesamtes Verzeichnis | Pfadbasiert (auch einzelne Dateien möglich) |
Änderungsverfolgung | Zeichnet Inhalte auf | Zeichnet Dateien auf |
Änderungshistorie | Repository und Arbeitskopien enthalten gesamte Historie | Nur im Repository komplett, Arbeitskopien enthalten nur neueste Version |