Subversion (Software)

Subversion (SVN) ist eine Open-Source-Software zur Versionsverwaltung. Da es viele Schwächen des in Entwicklerkreisen sehr beliebten Programms CVS behebt, wird Subversion oft als dessen Nachfolger bezeichnet, obwohl es sich um ein eigenständiges Projekt handelt. Es ist jedoch absichtlich von der Bedienung sehr ähnlich gehalten. CVS-Umsteiger werden es deshalb zu schätzen wissen, dass man bei den meisten Befehlen lediglich das cvs durch svn ersetzen muss. Zusätzlich zu vielen neuen Features werden fast alle Funktionen von CVS unterstützt. Mit cvs2svn existiert ein Konverter, mit dem ein CVS-Repository zu Subversion konvertiert werden kann. Subversion wurde unter einer Apache Style Lizenz veröffentlicht.

Inhaltsverzeichnis

Geschichte

Subversion wird seit Anfang 2000 bei CollabNet entwickelt und erreichte am 23. Februar 2004 die stabile Version 1.0. Am 29. September 2004 erschien Version 1.1, dessen größte Neuerung war, dass Repositories nicht mehr nur in einer Berkeley-Datenbank verwaltet werden können, sondern dass dazu auch direkt das Dateisystem benutzt werden kann. Außerdem wurden internationalisierte Programmausgaben ermöglicht. Die am 23. Mai 2005 erschienene Version Version 1.2 unterstützt nun auch optionale Bearbeitungssperren für Dateien, was teilweise für binäre Dateien von Vorteil sein kann.

Unterschiede zu CVS

Das Versionsschema von Subversion bezieht sich nicht mehr auf einzelne Dateien, sondern auf das ganze Repository. Somit kann man einfacher eine exakte Version beschreiben (z. B. "Version 2841" statt "Version vom 23. März 2004 20:56:31 GMT"). Die Revisionsnummer einer Datei entspricht dabei der Revisionsnummer des Repositorys, als sie das letzte mal geändert wurde, die Revisionsnummer eines Verzeichnisses entspricht der höchsten Revisionsnummer der enthaltenen Dateien und Verzeichnisse. Die Revisionsnummern einer einzelnen Datei können also durchaus lückenhaft sein, wenn diese nicht bei jedem Commit geändert wurden. Beispielsweise könnte eine Datei bei der Revision 23 zum Repository hinzugefügt worden sein, und einmal in der Revision 48 und 52 verändert worden sein. Bei einem Checkout einer Datei wird die größte Revisionsnummer ausgecheckt, die kleiner oder gleich der angeforderten ist. Wird in dem Beispiel die Revision 52 angefordert, so wird die Revision 52 der Datei ausgecheckt, wird hingegen die Revision 51 angefordert, liefert Subversion die Revision 48.

Subversion speichert beim Checkout, Update und Commit in einem gesonderten Verzeichnis (.svn) eine zweite Kopie jeder Datei. Dadurch verdoppelt sich der Speicherbedarf einer Arbeitskopie ungefähr, allerdings bietet dies bei entfernten Repositorys auch einige Vorteile. So können einige Aktionen wie Anzeige der lokalen Änderungen komplett ohne Netzwerkzugriff erfolgen und Subversion kann auch beim Commit nur die geänderten Teile übertragen, während CVS bei der Übertragung zum Server jeweils die gesamte Datei übertragen muss.

Vorteile gegenüber CVS

Nachteile gegenüber CVS

Anmerkung zur Komplexität von Subversion

Subversion hängt von einigen Bibliotheken ab, von denen jedoch nur die Apache Portable Runtime zwingend erforderlich ist.

Nicht alle dieser Komponenten sind immer notwendig. Apache2 und Neon sind für die WebDAV-Nutzung notwendig; will man sie nicht verwenden, braucht man diese Pakete nicht. Python ist für einige mitgelieferte Skripte zum Testen notwendig, für die Lauffähigkeit des Basispakets ist es nicht notwendig. Eine SSL-Implementierung benötigt man für WebDAV, wenn man es verschlüsselt anbieten will. Für eine Installation der Basisfunktionalität ist seit Version 1.1.0 nur die Apache Portable Runtime-Bibliothek notwendig. Zuvor war auch noch eine Berkeley-DB notwendig, die seit Subversion 1.1.0 nicht mehr installiert werden muss, weil das Repository optional auch direkt im Dateisystem gespeichert werden kann (FSFS-Backend).

Die Einrichtung eines Repositories besteht – wie beim Vorgänger CVS – aus dem Aufruf eines Befehls. Bei lokalem Zugriff kann man nun sofort loslegen. Will man Subversion als Server konfigurieren, hängt der Aufwand stark von der gewählten Methode ab, ist jedoch ähnlich mit dem anderer Systeme wie CVS.

GUI-Frontends / -Clients

Weblinks

See also: Subversion (Software), 2000, 2004, 2005, 23. Februar, 23. Mai, 29. September, Apache (Software), Apache HTTP Server, Apache Portable Runtime