SVN – Subversion
Mag. Stefan Hagmann
Stand: 03.2008
CVS dient dazu, beliebige Dateien zu verwalten. Mehrere Benutzer können an diesen Dateien arbeiten, ohne dass sich die verschiedenen Version in die Quere kommen. CVS hat aber nach wie vor einige Macken. Subversion SVN ist sein verbesserter Nachfolger.
Alle Dateien werden von einem SVN-Server verwaltet. Will jemand mit diesen Dateien arbeiten, so müssen diese zuerst in den eigenen Arbeitsbereich kopiert werden (auschecken). Wenn die Arbeit an den Dateien beendet ist, müssen diese wieder zurück an den Server übermittelt werden (einchecken).
SVN führt über alle Änderungen Buch und informiert den User gegebenenfalls darüber, wenn in der Zwischenzeit Änderungen an der bearbeiteten Datei durchgeführt wurden.
1.SVN Client – TortoiseSVN
Quelle: tortoisesvn.net (Stand 2008)
Als Client verwenden wir TortoiseSVN, das eine Weiterentwicklung von TortoiseCVS ist. TortoiseSVN ist ein Plug-in für den Windows-Explorer für SVN. Der Zustand einer Datei wird im Windows Explorer visuell dargestellt. Sprachpackete für andere Sprachen liegen ebenso vor.
Nach der Installation und dem Neustarten von Windows, ist alles was man so braucht im Kontextmenü integriert. Mit einem Rechtsklick auf einen Ordner, kann man ein neues Modul anlegen
Möchte man einen Ordner in das Projektarchiv importieren, klickt man mit einem rechten Mausklick auf den entsprechenden Ordner und wählt den Punkt Importieren aus.
Die URL muss hier genau stimmen, folgende Protokolle gibt es (Quelle: TortoiseSVN Handbuch)
file:// |
Direkter Zugriff auf einer lokalen Festplatte oder einem Netzwerkverzeichnis. |
http://, https:// |
Zugriff via WebDAVProtokoll auf einenApache-Server, auf demSubversion installiertist. https mit SSL Verschlüsselung. |
svn:// |
Nicht authentifizierter TCP/IP Zugriff mittels eigenem Protokoll auf einen svnserve Server. |
svn+ssh |
Authentifizierter, verschlüsselter TCP/IP Zugriff mittels SSH auf einen svnserve Server. |
Ab nun stehen alle Befehle über einen rechten Mausklick zur Verfügung.
Hier einige Darstellungen im Explorer. Die Icons bekommen überlagerte Symbole, die den Status der Dateien angeben. |
2.SVN Server
2.1.Linux Server
Im folgenden soll demonstriert werden, wie auf einem Linux System (hier Suse 10.1) ein SVN Server in Betrieb genommen wird. Wir setzen voraus, das ein solcher Server bereits installiert worden ist. Der Zugriff erfolgt dann über einen SSH Zugang (vergl. Kapitel 2. SSH Zugang).
Das Repository ist der Platz auf der Festplatte des Servers, wo die verschiedenen Versionsstände protokolliert und abgespeichert werden. Anstatt ständig neue Verzeichnisse mit merkwürdigen Versionsnummern anzulegen, reicht es bei einer Versionsverwaltung mit subversion wie auch mit CVS, regelmäßige Backups vom Repository anzulegen. Damit hat man auch für den Fall eines Hardwarefehlers vorgesorgt und sämtliche bisherigen Versionsstände gesichert. Zum Erstellen eines subversion Repository legt man erstmal an einer ausgewählten Stelle ein passendes Verzeichnis an.
-
Es sollte einen entsprechenden User geben, z.B. development
- Wechseln in dessen Home Verzeichnis
cd /home/development - Ein Verzeichnis für die Daten anlegen
mkdir svn - Das Repository initialisieren, und alle nötigen Dateien zur Verwaltung erstellen
svnadmin create /home/development/svn/ - Die nachfolgenden Schritte sind nicht unbedingt notwendig. Wir können eine eigene Gruppe am Server anlegen, und nur diese Gruppe hat Zugriff auf das Repository.
addgroup subversion # Benutzergruppe anlegen chgrp -R subversion /path/svn/ # Gruppe subversion für alle Dateien setzen chmod -R o-rwx /path/svn/ # Alle anderen dürfen nix chmod -R g+rw /path/svn/ # Gruppenmitglieder dürfen auch schreiben chmod g+s /path/svn/db # Sicher stellen, dass Logfiles geschrieben werden können. adduser SVNUser subversion #Benutzer anlegen - Nun noch die Datei <pfad>/svn/conf/svnserve.conf editieren.
[general] anon-access = none #keinen anonymen Zugriff erlauben auth-access = write #authentifizierte User dürfen Lesen und Schreiben realm = TestRepos #ein eindeutiger Name für das Repository - Nun noch Kontrollieren ob der Server auch gestartet wird (Runlevels).
Das war es auch schon, ab nun nur noch den Client einstellen, und los geht’s.
3.SSH Zugang
3.1.Schlüssel erstellen
Um eine Verschlüsselte Verbindung verwenden zu können, brauchen wir Schlüsselpaare. Wir verwenden dazu Software von http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html(Putty). Wir laden das entsprechende ZIP File herunter, in dem alle Tools enthalten sind die wir benötigen. Alle Vorgänge beschreiben ab nun einen Linux Server!
Mit dem Tool Puttygen.exe erstellen wir ein Schlüsselpaar.
Wir speichern nun den public key und den private key in separate Dateien ab. Den public key darf jedermann haben, den private key sollte man unter keinen Umständen weitergeben.
- Nun wechseln wir auf unseren Linux Server, in das home Verzeichnis unseres Benutzers. Dort gibt es ein Verzeichnis .ssh (Openssh sollte installiert sein). In diesem Verzeichnis, z.B. /home/development/.ssh/ legen wir eine Datei authorized_keys an. In diese Datei kopieren wir den public key (darf nur eine Zeile sein, kein Zeilenumbruch!).
- Leider dürften hier verschiedene Schlüsselformate verwendet werden. Deshalb kopieren wir die public key Datei auf den Server, und starten folgendes: ssh-keygen -i . Das konvertiert den Schlüssel in das richtige Format. Diesen schlüssel schreiben wir in die Datei authorized_keys.
- Nun wechseln wir noch die Zugriffsrechte auf chmod 400 authorized_keys (nur Leserechte für den Besitzer).
Damit darf sich jeder, der den private key besitzt ohne Passwort am Server anmelden. Denn der private key wird mit dem public key authentifiziert. Also nur wenn man den private key besitzt, ist so eine Anmeldung möglich.
Nun müssen wir nur mehr putty den Key mitteilen.
Wenn die Datei angegeben ist, geben wir noch die Verbindungsdaten ein und speichern die Session ab.
Ab nun kann man sich ohne Passwort beim user development anmelden.
3.2.TortoiseSVN und SSH
Nun wollen wir auch unseren Client SSH beibringen. Die URL lautet
svn+ssh://user@server/pfad/svn
Nun wird man auf das Problem stoßen, dass bei jeder Operation das Passwort verlangt wird. Um dieses Manko zu umgehen, starten man ein putty Tool: pageant.exe. Dieses Tool speichert einen Key und übermittelt bei Bedarf den Schlüssel an den Server. Damit entfällt die lästige Passworteingabe.
Wenn man pagent beim Sytemstart starten möchte, muss man das Key File angeben
pagent.exe [path\keyfile]
Für ein Batch File bietet sich folgendes an:
START pageant.exe [path\keyfile]
Dieses Batch-File lässt man beim Systemstart ausführen, oder man Klickt es bei Bedarf an.
4.Kurze Einführung in TortoiseSVN
Da nun alle Vorarbeiten erledigt sind, noch schnell eine Einführung in das Arbeiten mit TortoiseSVN.
Wir haben ein Projekt das wir einchecken möchten. Mit einem rechten Mausklick startet man das Importieren. Der Verbindungsstring lautet svn+ssh://user@server/pfad/svn/ProjektName |
|
Nachdem das Projekt eingecheckt ist, kann man es jederzeit in einen leeren Ordner auschecken. Wir legen einen leeren Ordner an und machen einen rechten Mausklick darauf. |
|
Wieder den Verbindungsstring angeben und dann den Button mit den drei Punkten anklicken. Damit erhält man einen Überblick, was alles im Repository gespeichert ist. OK Klicken und fertig. |
In den Einstellungen von TortoiseSVN sollte man noch die Ignoriermuster eingeben, das sind Dateien die nicht übertragen werden sollen, z.B. *.tmp *.[Tt]mp *.exe
So, das war’s. Viel Spass beim SVN System!