GIT vs. SVN: welches Versionskontrollsystem sollte man nutzen?

Digitale Dokumente werden während ihres Lebenszyklus mehrfach verändert. In solchen Fällen ist für Bearbeiter oft wichtig, nicht nur die neueste Version zu haben, sondern auch auf bestimmte vorherige Versionen zurückgreifen zu können. 

Im einfachsten Fall ist es möglich mehrere Versionen eines Dokuments zu speichern und mit einer eindeutigen Versionsnummer zu versehen. Bis zu einer gewissen Anzahl an Dokumenten, mag zwar diese Methode funktionieren – doch sind wir mal ehrlich, sie ist absolut unwirksam! 

Denn fast nahezu identische Kopien eines Dokuments müssen mehrfach gespeichert und gepflegt werden – es erfordert viel Aufmerksamkeit, Disziplin und kann im schlimmsten Fall zu einem Versionschaos und Datenverlust führen. 

Daher wurden Software Tools entwickelt, um die Versionsarbeit zu automatisieren. Die zwei bekanntesten Tools im Bereich der Versionskontrollsysteme sind Git und Subversion. In diesem Artikel erfahren Sie nützliche Informationen über diese beiden Versionskontrollsysteme und lernen deren wichtigste Unterschiede sowie Vor- und Nachteile kennen.

Was ist ein Versionskontrollsystem und warum wird es benötigt?

Versionskontrollsystem (VCS) ist eine Software zur Erleichterung der Arbeit bei sich oft veränderlichen Daten und Informationen. Mit einem Versionskontrollsystem ist es möglich mehrere Versionsstände desselben Dokuments zu speichern und bei Bedarf auf frühere Versionen zurückzugreifen. 

Ein Versionsverwaltungssystem erlaubt außerdem eine Datenzugriffsteuerung, Verwaltung und Einrichtung unterschiedlicher Benutzerberechtigungen (z. B. lesender oder schreibender Zugriff) bis hin zum Tracking aller Änderungen.

Solche Systeme werden sehr häufig in der Softwareentwicklung zum Speichern und Verwalten des Quellcodes eines Programms benutzt. Jedoch können diese Systeme auch in anderen Bereichen erfolgreich eingesetzt werden, vor allem in denen mit einer Vielzahl sich ständig ändernder Dokumente gearbeitet wird.

Was ist Git?

Git entstand aus der Abspaltung des proprietären Tools mit dem Namen BitKeeper, das ursprünglich von Linus Torvalds, dem Linux-Schöpfer, für die Versionsverwaltung des Linux-Kernel-Codes entwickelt wurde. Seither hat sich dieses VCS zu einem der beliebtesten Tools etabliert und bescherte der Entwickler-Community eine neue Ebene der kollaborativen Programmierung. 

Mittlerweile wird es in zahlreichen Projekten verwendet und gehört bei Millionen von Entwicklern zum Standardtool im Bereich der Versionskontrolle. Git ist kostenlos und wird unter der Open Source-Lizenz GNU der Version 2 vertrieben.

Es handelt sich um ein verteiltes Versionskontrollsystem, mit dem Änderungen am Quellcode durchgeführt und nachverfolgt werden können, indem ein spezieller Datenbanktyp unterstützt wird – das sogenannte lokale Repository. 

Es ist im Grunde der exakte Klon des zentralen Repositorys, in dem Benutzer auf ihren lokalen Computer-Systemen sowohl aktuelle als auch frühere Versionen von Dateien speichern. Der Hauptvorteil davon besteht darin, dass Benutzer für seinen Betrieb nicht auf den Netzwerkzugriff angewiesen ist, wodurch die Integrität des Inhalts sichergestellt wird.

Was ist Subversion?

Subversion (SVN) ist ein kostenloses Open-Source-Versionskontrollsystem, mit dem Dateien und deren Änderungen auf einem zentralen Server verwaltet und gespeichert werden. Es wird unter der Apache-Lizenz als Open Source zur Verfügung gestellt. SVN wurde im Jahr 2000 von CollabNet entwickelt und besteht bereits seit über zwei Jahrzehnten. 

Es wird weiterhin häufig als ein erfolgreiches VCS-Tool sowohl in der Open Source-Community als auch in korporativen Ökosystemen eingesetzt. Im Gegensatz zu Git speichert Subversion die Dateiversionshistorien auf einem zentralen Server. Es werden Verzweigungen in einem zentralen Repository erstellt. Wenn Benutzer Änderungen am Code vornehmen, führen sie dies auf den lokalen Computersystemen durch. Sobald sie fertig sind, wird der geänderte Code wieder in das zentrale Repository eingecheckt. Im Fachjargon nennt man diesen Vorgang Commiten.

Git vs. Subversion: Die Unterschiede auf einen Blick

Subversion wird verwendet, um den Entwicklungsprozess zu automatisieren und Routinearbeiten zu vermeiden. Dieses Programm ist vor allem im Software-Entwicklungsbereich sehr nützlich:

  • Es ist nicht notwendig sich an alle Änderungen und Fehler im Code zu erinnern, all diese Funktionen werden von Subversion unterstützt. Jede Änderung wird protokolliert und kann dank einer Suchfunktion später ganz leicht wieder gefunden werden.
  • Es ist nicht erforderlich Revisionen auf der Festplatte zu speichern. Diese befinden sich bereits im zentralen System-Repository.
  • Es gibt einen automatischen Prozess zum Erstellen von Ordnern mit geringfügigen Unterschieden.
  • Projekte müssen nicht manuell übertragen werden, sondern können an einem neuen Speicherort aus dem Repository abgerufen werden (Check-Out).

Darüber hinaus lässt das System keine Fehler zu, die ein Entwickler durch manuelles Ausführen all dieser Aktionen machen könnte.

Unter den Funktionen dieser VCS-Software sollten die nachfolgenden besonders nützlichen Funktionen hervorgehoben werden:

  • Speichern des Änderungsverlaufs in einem zentralen Repository
  • Kopieren von Objekten mit Verzweigungsverlauf
  • Gewährleistung der Übertragung von Änderungen zwischen Kopien von Objekten, auch einer vollständigen Zusammenführung von Kopien
  • Verzweigungsunterstützung – Erstellen und Zusammenführen von Zweigen (Merging)
  • Bereitstellung von Marken, sogenannter „billiger Kopien“
  • Änderungsverlauf und Kopien von Objekten werden in Form von verknüpften einfachen Kopien gespeichert
  • effizientes Arbeiten mit Text- und Binärdateien
  • viele Optionen für den Zugriff auf das Repository Speicher
  • die Möglichkeit zur Spiegelung des Projektarchivs (Repository)
  • Verfügbarkeit von Libraries für diverse Programmiersprachen und die Möglichkeit, diese zu in den Programmcode zu integrieren

Im Gegensatz zum verteilten VCS-System wie Git speichert Subversion Informationen in einem einzigen zentralen Repository, das sich entweder auf einer lokalen Festplatte oder auf einem Netzwerkserver befinden kann. Das einfach zu bedienende und gleichzeitig leistungsstarke System ist bei allen Entwicklern sehr beliebt.

Werfen wir nun einen Blick auf ein das Git-Versionskontrollsystem. Dieses System ist im Gegensatz zu Subversion ein verteiltes Versionskontrollsystem. Das Programm ist frei lizenziert und wird von Projekten wie Linux-Kernel, Android, PHP, GNU Core Utilities, Chrom, jQuery, NASM, MediaWiki, DokuWiki und einigen weiteren Linux-Distributionen verwendet.

Wofür wird Git verwendet? Um den Stand der Arbeit insbesondere mit der Hauptentwicklungslinie (Remote-Repository) zu synchronisieren und unterschiedliche Versionen zu speichern und zu aktualisieren. 

Dieses System ist besonders praktisch, wenn mehrere Entwickler gleichzeitig an einem Projekt arbeiten. Mit diesem System ist es möglich die Dateien des lokalen Repository unter Berücksichtigung der von anderen Entwicklern vorgenommenen Änderungen im Remote-Repository zu aktualisieren und zu bearbeiten.

Die Vorteile der Git-Verwendung:

  • Das Git-System bietet alle Vorteile eines VCS, wie auch Subversion.
  • Das System Verfügt über einen einfachen, sofort einsatzbereiten Verschlüsselungsprozess.
  • Wenn es keine Verbindung zum Server mit dem Remote-Repository besteht, können Entwickler Commits an dem lokalen Server vornehmen und erst bei Verfügbarkeit hochladen.
  • Serviceinformationen werden im Stammverzeichnis des Repositorys gespeichert.
  • Support vom Import/Export nach/von Subversion und CVS.
  • Das System ist sehr beliebt und viele Entwickler arbeiten damit.
  • Es ist möglich den Code auf GitHub, BitBucket und Google Code zu hosten.

Das Versionsmanagement Software weist eine hohe Performance auf und bietet fortschrittliche Integrationsmöglichkeiten mit anderen VCS. Es enthält außerdem ein durchdachtes Befehlssystem und eine benutzerfreundliche und sofort einsatzbereite Weboberfläche. Bei der Arbeit damit haben die Entwickler eine absolute Kontrolle über das Repository und die Arbeitsgeschwindigkeit.

Es gibt aber auch ein paar Nachteile, die Benutze häufig nennen:

  • unbequemer Übergang von anderen VCS
  • Verwendung von SHA1-Hashes zur Identifizierung von Revisionen
  • das System findet keine leeren Verzeichnisse
  • das Generieren des Verlaufs einer bestimmten Datei, des Bearbeitungsverlaufs für einen bestimmten Benutzer, der Suche nach Änderungen an einem bestimmten Speicherort einer bestimmten Datei dauert zu lange

Fazit

Das Git-System ist zweifellos eines der beliebtesten und am weitverbreiteten Versionskontrollsysteme, das speziell für kleine bis große Projekte entwickelt wurde. Es handelt sich um ein verteiltes Open-Source-Versionskontrollsystem, mit dem Änderungen im Quellcode in einem lokalen Repository gespeichert und verwaltet werden können. Es ist nichts anderes als ein Klon des zentralen Repositorys. 

SVN ist auch ein VCS, das auch für den gleichen Zweck verwendet wird, dass allerdings im Gegensatz zu Inhaltsspeicherung bei Git nur Dateien speichert. Auch verwendet SVN einen zentralen Server, um aktuelle und frühere Versionen von Dateien wie Quellcode, Dokumentation und anderer Inhalte zu verwalten. 

Ein großer Vorteil des Git-Systems gegenüber SVN ist, dass Benutzer die absolute Versionskontrolle haben, ohne sich jemals um die Netzwerkverfügbarkeit sorgen zu müssen. Ein Zugriff auf SVN auf den Repository-Server bei fehlender Netzwerkverbindung ist dagegen äußerst unwahrscheinlich.

Subversion wurde als Ersatz für CVS geschaffen und hat sich bis heute sehr erfolgreich geschlagen. Das Git-Versionskontrollsystem hat allerdings im Laufe der Zeit aufgrund seiner Architektur und Benutzerfreundlichkeit des Systems deutlich aufgeholt und an Popularität gewonnen. 

Welches System tatsächlich besser ist, lässt sich an dieser Stelle jedoch nicht final beantworten. Vielmehr hängt die Entscheidung über den Einsatz eines bestimmte Versionskontrollsystems auch ein Stück von den einzelnen Projektanforderungen und des Setups des Entwicklungsteams ab.

Interessante Links:
Beitrag auf entwickler.de zu Versionskontrollsystemen

Eine Einführung zu GIT und SVN

Bilder: Canva


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar