Kontakt aufnehmen

Subversion (SVN) – Tutorial, Tipps & Tricks

Wer schon einmal in einem Team von Programmierern gearbeitet hat, wird das Problem mit Sicherheit kennen. Mehrere Leute arbeiten gleichzeitig an einem Projekt und keiner der Kollegen weiß davon. Das führt schnell dazu, dass am gleichen Projektteil von verschiedenen Leuten unterschiedliche Änderungen durchgeführt werden. Mit der frei erhältlichen Software “Subversion” kann dieses Problem gelöst werden. Mit diesem Programm werden alle Skripte und Dateien geordnet verwaltet und auch überwacht, so dass keine Konflikte mehr entstehen können.

In dieser Dokumentation wird die Arbeit mit Subversion von der Installation bis zu möglichen Problemen beschrieben sowie die Vor- und Nachteile dieser Software aufgezeigt.

Geschichte von Subversion

Seit dem Jahr 2000 wird die Software als Ablösung der damals sehr verbreiteten Versionsverwaltung CVS (= Concurrent Versions System) entwickelt. Am 23.02.04 stand die erste stabile Version 1.0 zur Verfügung. Ungefähr ein halbes Jahr später erschien die Version 1.1, mit der die Repositories nicht mehr zwingend in einer Berkeley-Datenbank sondern auch über das Dateisystem direkt verwaltet werden können. Weiterhin wurden in dieser Version internationale Programmausgaben ermöglicht. Seit der im Mai 2005 erschienenen Version 1.2 waren optionale Bearbeitungssperren für Dateien möglich, was zum Teil für Binärdateien vorteilhaft ist. Im Januar 2006 wurde die Version 1.3 freigegeben, mit der Verbesserungen in den Bereichen Server-Logging, Autorisierung, Programmiersprachen-Anbindungen, Kommando-Optionen und Performance bot. Die aktuelle Hauptversion des Programms wurde im September 2006 veröffentlicht, deren wichtigste Neuerung das Tool "svnsync", welches das Spiegeln von Repositories ermöglicht.

Auf welchem Konzept basiert Subversion?

Der mit entscheidende Vorteil von Subversion ist die Arbeit im Bereich "Tagging" und "Branching". In diesem Zusammenhang kennt Subversion nur die Option der Dateikopie, die je nach Nutzungsart Tag- oder Branch-Charakter hat. Aufgrund dessen ist jede Kopie eines Verzeichnisses oder einer Datei ein Branch davon. Tags entstehen in Subversion, wenn man davon eine Kopie anlegt und keine Änderungen mehr vornimmt. Da es in Subversion keine strikte Trennung von Tag- und Branch-Semantik (= Schreibweise) gibt, liegt die genaue Strukturierung des/der Repositories beim Administrator. Die folgende Grafik zeigt, welches Struktur-Konzept sich in der Praxis etabliert hat.

Typische Repository-Struktur
Darstellung: Typische Repository-Struktur

Normalerweise wird das Repository in drei Bereich aufgeteilt - "branches", "trunk" und "tags". Im "branches"-Pfad (branches = Verzweigungen) wird die grundlegende Entwicklung durchgeführt. Das heißt, dass komplett neu entwickelte Bereiche eines Projektes oder eine weitgehende Überarbeitung eines Bereiches hier realisiert wird. Im "trunk"-Pfad (trunk = Stamm) befinden sich die Dateien für die eigentliche Entwicklung des Projektes. Der "tags"-Pfad (tags = Markierungen) stellt eine Kopie des Trunks da und enthält eine release-fähige Version des Projektes. In diesem Pfad ist zwar eine Weiterentwicklung möglich, aber nur um einen schnellen Bugfix o. ä. bereitzustellen. Die Entwicklung im eigentlichen Sinn ist hier nicht vorgesehen.
Den Administratoren eines Projektes steht es frei, die drei Zweige noch weiter nach ihren Bedürfnissen zu unterteilen.

Arbeitsweise mit Subversion

In der folgenden Grafik wird aufgezeigt, wie grundlegend mit Subversion gearbeitet wird.

Arbeitsweise mit SVN
Darstellung: Arbeitsweise mit SVN

Zu Beginn der Entwicklung wird über ein svn-Kommando der benötigte Teil aus dem "trunk"-Verzeichnis des Repositories ausgecheckt. "Auschecken" bedeutet nichts anderes, als eine Kopie des "trunk"-Verzeichnisses auf dem lokalen Rechner angelegt wird. Diese lokale Kopie wird oft als "Working Copy" bezeichnet. In dieser lokalen Kopie werden alle entwicklungsrelevanten Dateien bearbeitet.
Mit der Hilfe des Makefiles werden die aktualisierten Dateien der Working Copy in das eigentliche Projektverzeichnis kopiert. Das Projektverzeichnis ist zum Betrieb des Projektes notwendig.
Nach dem Ende der Entwicklung muss das SVN-Repository wieder aktualisiert werden. Zu diesem Zweck werden die aktualisierten Dateien aus der Working Copy "eingecheckt". Das bedeutet, dass die entsprechenden Dateien wieder ins Repository übertragen werden. SVN erkennt automatisch, welche Dateien aktualisiert wurden.

Installation von Subversion

Installation des Webservers

Subversion ist eng an den Apache-Webserver gekoppelt. Es besteht zwar keine Notwendigkeit, den Webserver zu installieren, aber zur Verwaltung der Repositories ist es empfehlenswert. Die Server-Software kann über die folgende Internet-Adresse heruntergeladen werden: http://httpd.apache.org/download.cgi.

Bei der Installation gibt es eine Änderung zur herkömmlichen Variante, die zwingend beachtet werden muss. Bei der aktuellen SVN-Version 1.4.x muss man die Version 2.0.x des Apache-Webservers verwenden.

Änderung bei der Installation
Darstellung: Änderung bei der Installation

Im obigen Fenster muss zwingend die Option "only for the Current User, on Port 8080, when started Manually." markiert werden. Wenn der Webserver in der herkömmlichen Variante auf Port 80 und als Windows-Service installiert wird, funktioniert die SVN-Verwaltung im Browser nicht.

Installation der Subversion-Software

Auf der Internetseite "http://subversion.tigris.org/project_packages.html" können alle aktuellen SVN-Versionen für die jeweiligen Betriebssysteme heruntergeladen werden. In der Windows-Sektion muss man sich zuerst entscheiden, ob man SVN für den Apache 2.0.x oder 2.2.x herunterladen möchte. Dazu stehen die Links "Win32 packages built against Apache 2.0" bzw. "Win32 packages built against Apache 2.2" zur Verfügung. Bei einem Klick auf einen der Links bekommt man alle verfügbaren Versionen angezeigt. Der Einfachheit halber sollte man sich die Windows-Installer-Version herunterladen. Diese Versionen haben den allgemeinen Dateinamen "svn-x.x.x-setup.exe".
Die eigentliche Installationsprozedur beinhaltet keine Besonderheiten. Man wählt - wie üblich - das Installationsverzeichnis aus und legt bei Bedarf eine Desktop-Verknüpfung fest. Eines der Installationsfenster ist vielleicht für Neulinge interessant. Die Verknüpfungen in diesem Fenster bieten die Möglichkeit, entweder auf dem Desktop oder in der Schnellstartleiste eine Verknüpfung für die SVN-Dokumentation anzulegen.
Die Installationsroutine liefert automatisch alle SVN-Kommandos sowie die benötigten Apache-Module mit. Nach dem Ende der Installation können sie diese bereits ohne weitere Eingriffe testen. Dazu sind die folgenden Schritte notwendig:

1. Starten der Windows-Konsole über "Start" / "Ausführen" / "cmd" eingeben
2. Eingabe des Kommandos "svn checkout http://svn.collab.net/repos/svn/trunk"

Dabei sollte man ein Verzeichnis mit genügend Speicherplatz wählen, denn es wird eine große Datenmenge auf den lokalen Rechner kopiert. Wenn der Vorgang geklappt hat, wird beim Abschluss in der Konsole folgendes angezeigt:

Test der svn-Installation
Darstellung: Test der svn-Installation

Jetzt geht es darum, den Webserver fit für die SVN-Verwaltung zu machen. Dazu sind die folgenden Maßnahmen notwendig:

  • Im "bin"-Ordner des Subversion-Installationsverzeichnisses sind die Dateien "mod_dav_svn.so" und "mod_authz_svn.so" zu finden. Diese Dateien müssen in das "modules"-Verzeichnis im Apache-Ordner kopiert werden.
  • Nach dem Kopiervorgang muss die Konfigurationsdatei des Apache-Servers bearbeitet werden.
  • In der httpd.conf-Datei muss in der Zeile "#LoadModule dav_module modules/mod_dav.so" der "#" am Anfang entfernt werden. Damit wird das Modul aktiviert.
  • Die Liste der Apache-Module muss die folgende Zeile hinzugefügt werden: "LoadModule dav_svn_module modules/mod_dav_svn.so".
Als nächstes muss in der Konsole ein Basisverzeichnis für alle Repositories angelegt und ein Name dafür vergeben werden. Dazu muss der Administrator an einem Ort seiner Wahl ein neues Verzeichnis anlegen. In diesem Verzeichnis muss man das Kommando "svnadmin create myrepos -fs-type fsfs" eingeben, wobei "myrepos" der Name des Repositories ist. Dabei muss beachtet werden, dass das create-Kommando keine Statusmeldung zurückgibt.
Nach dem Anlegen des Repository-Verzeichnisses muss die httpd.conf-Datei noch einmal ergänzt werden. Die folgenden Zeilen können direkt am Ende der Datei hinzugefügt werden.

<Location /svn/myrepos>
DAV svn
SVNPath [Laufwerk]:/pfad/zum/ordner/myrepos
</Location>

Nach den Änderungen muss die Datei gespeichert und der Webserver neu gestartet werden. Nachdem alle Änderungen durchgeführt wurden, kann man zum Testen im Browser die folgende Adresse "http://localhost:8080/svn/myrepos/" eingegeben werden. Wenn im Browser das folgende Fenster angezeigt wird, hat die Installation funktioniert. Die Grafik zeigt einen Ausschnitt aus dem Browserfenster:

Test der svn-Installation im Browser
Darstellung: Test der svn-Installation im Browser

Arbeiten mit Subversion

Nach der Installation der Software müssen die zu überwachenden Dateien und Ordner ins SVN-Repository übertragen werden. Dies geschieht durch das “svn import”-Kommando, welches nur zu Beginn benötigt wird. Dazu wechselt man in das Verzeichnis, in dem sich die Dateien befinden und gibt das folgende Kommando ein:

Sicherheit mit Subversion

Da mit Subversion die Daten mit HTTP übertragen werden, kann dies logischerweise auch über das Internet passieren. Aus diesem Grund muss auf die Sicherheit geachtet werden, so dass nicht jeder die Möglichkeit hat, die im SVN überwachten Daten zu manipulieren. Die erste Möglichkeit, für die Sicherheit zu sorgen, ist die bekannte Basic-Authentifizierung.

SVN-Client Tortoise

Wer sich nicht unbedingt mit einem text-basierten SVN-Client (= Konsole) herumschlagen möchte, kann auch auf grafische Oberflächen, die es für Windows und Linux gibt, zurückgreifen. In diesem Abschnitt der Dokumentation soll der SVN Client “Tortoise SVN Client” näher beschrieben werden.

Svnserve

Obwohl SVN eng an den Apache gekoppelt ist, ist es nicht zwingend notwendig, den Apache als Subversion-Server zu verwenden. Subversion liefert bei der Installation ein Tool mit der Bezeichnung “svnserve” mit, mit dem ein alternativer Subversion-Server mit dem gleichen Namen eingerichtet werden kann.

Weitere Artikel

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Weiterlesen: ⯈ Filezilla

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern