Während Subversion-Repositorys (SVN-Repositories) den Git-Repositorys ähneln, ist der Unterschied zwischen den beiden recht gering. Bei beiden handelt es sich um die beiden beliebtesten Versionskontrollsysteme, mit denen Änderungen im Quellcode im Zeitverlauf nachverfolgt werden können, sie weisen jedoch einen erheblichen Teil der Unterschiede in Bezug auf die Architektur auf. Sie können ähnliche Dinge wie Markieren und Verzweigen ausführen, unterscheiden sich jedoch drastisch in der Art und Weise, wie sie Dinge speichern. Git ist ein kostenloses und Open-Source-Versionskontrollsystem, das unter der Lizenz von GNU vertrieben wird, während SVN ein zentrales Versionskontrollsystem ist, das unter der Open-Source-Lizenz vertrieben wird. Dieser Artikel zeigt einige wichtige Unterschiede zwischen den beiden.
Ursprünglich für die Entwicklung des Linux-Kernels von Linus Torvalds unter Verwendung eines proprietären DVCS mit dem Namen BitKeeper entwickelt, hat Git eine neue Ebene des kollaborativen Codierens unter den Entwicklern eingeführt. Git ist eines der beliebtesten Tools, die in fast Tausenden von Projekten verwendet und von Millionen von Entwicklern auf der ganzen Welt eingesetzt werden. Es handelt sich um ein verteiltes Versionskontrollsystem, das die Änderungen des Quellcodes im Laufe der Zeit im Auge behält, indem eine spezielle Art von Datenbank verwaltet wird, die als lokales Repository bezeichnet wird. Hierbei handelt es sich um den genauen Klon des zentralen Repositorys, in dem Benutzer sowohl die aktuelle als auch die frühere Versionsgeschichte von speichern können Dateien auf ihren lokalen Maschinen. Der Hauptvorteil von Git ist, dass es für seinen Betrieb nicht auf den Netzwerkzugriff angewiesen ist, was die Integrität der Inhalte gewährleistet.
Subversion oder SVN ist ein kostenloses Versionskontrollsystem (Open Source), das zum Verwalten und Speichern von Dateien und deren Änderungen im Laufe der Zeit auf einem zentralisierten Server verwendet wird. Es wird unter der Lizenz von Apache als Open Source vertrieben. SVN wurde im Jahr 2000 von CollabNet gegründet und ist seit über einem Jahrzehnt im Einsatz. Es erfreut sich nach wie vor großer Beliebtheit als erfolgreiches VCS-Instrument sowohl in der Open Source-Community als auch im Unternehmensumfeld. Im Gegensatz zu Git speichert SVN die Versionsverläufe von Dateien auf einem zentralen Server. Es erstellt Zweige innerhalb des zentralen Verzeichnisses, die als Verzeichnisse erstellt werden. Wenn ein Benutzer Änderungen an dem Code vornehmen möchte, muss er dies von seinen eigenen Maschinen aus tun, und wenn er fertig ist, wird der Code an das zentrale Repository zurückgegeben.
Beide sind die beiden beliebtesten Open-Source-Versionskontrollsysteme, mit denen Änderungen im Quellcode im Laufe der Zeit verfolgt werden, sie unterscheiden sich jedoch stark voneinander. Git ist ein verteiltes Versionskontrollsystem, das ein verteiltes System zum Katalogisieren aller Versionen einer Projektdatei verwendet. Subversion (svn) dagegen ist ein zentralisiertes Versionierungs- und Revisionskontrollsystem, das unter der Open-Source-Lizenz vertrieben wird.
Git ist ein verteiltes Versionskontrollsystem. Das bedeutet, anstatt einen zentralisierten Server zum Speichern und Verwalten des Quellcodes zu verwenden, erstellt es ein lokales Repository, das nichts weiter als der Klon des zentralen Repositorys ist, der es Entwicklern ermöglicht, Änderungen an der gesamten Sache lokal vorzunehmen. Das lokale Repository umfasst alles, von der Versionshistorie über Verzweigungen bis hin zu Metadaten. Wenn sich Entwickler jedoch zu Subversion verpflichten, senden sie alle Änderungen zurück an das zentrale Repository.
Wenn Benutzer ein Repository in Git auschecken, erhalten sie einen vollständigen Klon der gesamten Sache, die auf ihren lokalen Computern gespeichert ist. Sie müssen die am Code vorgenommenen Änderungen "pushen", um ihn mit anderen Benutzern zu teilen, oder "pull", um ihn mit einem Remote-Repository zu synchronisieren. Dadurch können mehrere Benutzer problemlos zusammenarbeiten, ohne das zentrale Repository zu stören. In Subversion teilt jeder Benutzer über Verzweigung dasselbe zentrale Repository.
Git ist am wenigsten abhängig vom Netzwerkzugriff, da die meisten seiner Vorgänge offline verfügbar sind. Benutzer können das Zusammenführen, das erneute Basieren und das Verzweigen durchführen, ohne sich um den Netzwerkzugriff kümmern zu müssen. Ein Netzwerk ist jedoch nur erforderlich, wenn Benutzer ihr lokales Repository mit dem zentralen Repository synchronisieren müssen. Auf der anderen Seite erfordert Subversion für den Großteil der Vorgänge Netzwerkzugriff, da es kein lokales Repository für die lokale Speicherung der Änderungen gibt.
Alles in Git wird vor dem Speichern mit dem SHA-1-Hash-Algorithmus kryptographisch check-summiert, um die Robustheit des Inhaltes des Codes sicherzustellen. Es ist praktisch unmöglich, den Inhalt des Codes zu ändern, ohne dass Git davon erfährt. Im Gegensatz dazu hat Subversion keinen gehashten Inhalt, was bedeutet, dass die Inhaltsintegrität im Falle eines Netzwerk- oder Festplattenausfalls nicht garantiert wird. Zweifellos ist Git die bessere Alternative, wenn es um die Integrität von Inhalten geht.
Git ist zweifellos eines der beliebtesten und am häufigsten verwendeten Versionskontrollsysteme, das speziell für kleine und große Projekte entwickelt wurde. Hierbei handelt es sich um ein verteiltes Versionskontrollsystem für Open Source, mit dem Änderungen im Quellcode im Laufe der Zeit in einem lokalen Repository gespeichert und verwaltet werden, das nichts weiter als der Klon des zentralen Repositorys ist. SVN ist auch ein Versionskontrollsystem, das im Wesentlichen für den gleichen Zweck verwendet wird, mit Ausnahme der Art und Weise, wie Dinge gespeichert werden. Im Gegensatz zu Git verwendet SVN einen zentralisierten Server, um aktuelle und frühere Versionen von Dateien wie Quellcode, Dokumentation, Webseiten usw. zu verwalten. Ein großer Vorteil von Git gegenüber SVN besteht darin, dass Git-Benutzer die Versionskontrolle haben können, ohne sich um das Netzwerk kümmern zu müssen Zugriff, der in SVN höchst unwahrscheinlich ist.