Home > Programmieren, Versionsverwaltung, Windows > Subversion – Windows Server & Integration in Visual Studio 2005

Subversion – Windows Server & Integration in Visual Studio 2005

11. Juli 2007

Nicht jeder möchte, bzw. kann mit Microsoft Visual Source Safe als Versionsverwaltung arbeiten. Es ist zwar praktisch, dass es direkt in Visual Studio integriert ist, aber viele Funktionen benötigt man gar nicht und die Kosten sind auch nicht ganz unerheblich.

Eigentlich wollte ich als Alternative CVS einsetzen. Aber auf meiner Suche nach einer freien Lösung um den Client in Visual Studio zu integrieren, bin ich auf Subversion gestoßen. Eigentlich wusste ich schon dass es existier und sich dieses Projekt von CVS abgespalten hat, aber bisher dachte ich nicht, dass es sich in Windows und vor allem Visual Studio integrieren lässt.

Im Folgenden will ich die Einrichtung eines Subversion-Servers als Windows-Dienst und die Integration in Visual Studio 2005 erklären, da es anscheinend im Internet keine Komplettanleitung dafür zu geben scheint.

Herunterladen von Subversion

Subversion wird hier auf Tigris.org gehostet und man kann auch von dort bereits vorkompilierte Binaries für Windows herunterladen. Dadurch muss man sich nicht mit Cygwin bzw. MinGW herumschlagen nur um Subversion unter Windows kompilieren zu können.

Einrichten eines Subversion-Servers als Windows-Dienst

Es reicht die Binaries aus dem heruntergeladenen ZIP-Archiv zu entpacken bzw. den heruntergeladenen Installer auszuführen. Der Installer erweitert auch automatisch die PATH-Umgebungsvariable des Systems. Wer die ZIP-Version heruntergeladen hat muss das manuell machen. (Evtl. muss man sich neu Anmelden, damit die PATH-Variable aktualisiert wird, falls Subversion nicht gefunden wird.)

Erst sollte der Standard-Subversion-Port 3690 in der installierten Firewall freigegeben werden, falls remote darauf zugegriffen werden soll.

Der Server lässt sich auch so starten indem man einfach in der Konsole diesen Befehl eingibt:

svnserve.exe --daemon

Die Einrichtung als Dienst sollte aber der optimale Weg für Windows sein, da man sich später nicht mehr um die Verfügbarkeit kümmern muss. (Alternativ gäbe es aber noch die Einrichtung in einem bestehenden Apache-Server, aber diese Option habe ich bisher nicht verwendet.)

Leider ist mein ServiceControl noch nicht fertig, allerdings kann man einen Windows-Dienst auch manuell registrieren. Dazu muss man einfach folgende Zeile in die Konsole eingeben:

sc create SVNServer binPath= "svnserve.exe --service --root x:\\repositories" start= auto error= normal depend= tcpip DisplayName= "Subversion Server"

(Zeile einfach in die Zwischenablage kopieren und in Konsole einfügen)

x:\repositories steht dabei für das Verzeichnis der Repositories, in dem die ganzen Quellcodes verwaltet werden sollen. Es wird empfohlen dieses Verzeichnis erst anzulegen.

Der Dienst kann übrigends so wieder entfernt werden:

sc delete SVNServer

Erstellen eines Repository für die Quellcodeverwaltung

Natürlich muss das oben beschriebene Verzeichnis X:\Repositories auch Repositories für Projekte enthalten. Diese werden einfach mit diesem Befehl in der Konsole erstellt:

svnadmin create x:\\repositories\\test

Damit wird das Repository test in dem zuvor angelegten und beim Dienst angegebenen Root-Verzeichnis erstellt.

Einstellen der Zugriffsrechte

Standardmäßig hat man nur anonymen Zugriff auf die von SVN bereitgestellten Repositories. Das heißt aber auch, dass keine Updates vorgenommen werden können. Um die Zugriffsrechte zu konfigurieren geht man so vor:

In dem zuvor erstellten Repository test , das unter x:\repositories\test liegt, wurde ein Verzeichnis conf angelegt. In dieser existiert die Datei svnserve.conf. Diese öffnet man einfach mit einem Texteditor wie den Windows Editor oder Notepad++.

In dieser Datei fügt man einfach folgende Zeilen ein:

[general]
anon-access = none
auth-access = write
password-db = ../../users.txt

anon-access = none sorgt dafür, dass anonyme Benutzer keinen Zugriff mehr haben. password-db = ../../users.txt gibt an, dass die ganzen Benutzer und Passwörter in der Datei ../users.txt liegen. Der Dateiname ist relativ zum conf-Verzeichnis des Repository und muss mit einem UNIX-Pfad angegeben werden (relativ oder absolut). Da nicht für jedes Repository eine extra Benutzerliste erstellt werden soll, habe ich den relativen Pfad ../../ vor die users.txt gegeben. Die Datei muss daher mit einem Editor im Verzeichnis x:\repositories erstellt werden und muss folgenden Inhalt haben:

[users]
Benutzer = Passwort

Die Datei ist also nur eine Liste in der in jeder Zeile der Benutzername und hinter dem =-Zeichen das benötigte Passwort steht. Falls man sich Notizen zu bestimmten Benutzern machen möchte kann man ein Kommentar erstellen. Alle Zeilen die mit einem # beginnen werden ignoriert.

Hinweis: Es gibt zwar die Möglichkeit allen anonymen Benutzern auch Schreibzugriffe zu gewähren indem man anon-access = write verwendet, das kann ich aber nicht empfehlen, da es ein extremes Sicherheitsrisiko wäre und man nicht einmal feststellen könnte, wer was gemacht hat.

Integration von SVN in Visual Studio 2005

Wenn SVN konfiguriert, ein Repository erstellt und die Zugriffsrechte gesetzt sind, dann sollte alles bereit sein. Nun könnte man die Versionsverwaltung mit der Konsole machen, aber es gibt auch ein AddIn für Visual Studio das die Arbeit erheblich erleichtert.

Es heißt AnkhSVN und das Plugin lässt sich hier herunterladen. Ich empfehle das MSI-Paket herunterzuladen, denn damit lässt sich das Plugin schnell und einfach installieren.

Nach der Installation erscheint es im Menü „Extras“ im Visual Studio. Man kann von dort Repositories zB anzeigen lassen, auschecken,…

Projekte in ein Repository einfügen

Erst sollte das Projekt gespeichert werden. Mit einem Rechtsklick auf die Projektmappe und Ankh/Add Solution to Repository fügt man das Projekt einem Repository hinzu.

Die URL für das Repository ist zB für das Beispiel oben: svn://localhost/test

Zusätzlich muss man sich als einen der zuvor angegebenen Benutzer anmelden. Um Änderungen neu auf den Server zu übertragen klickt man wieder mit der rechten Maustaste auf die Projektmappe und wählt dort Commit.

Projekte aus einem Repository auschecken

Natürlich kann man mit dem Plugin auch in dem Repository enthaltene Projekte von jedem Computer aus der Zugriff über das Netzwerk hat auschecken.

Dazu klickt man einfach im Visual Studio auf Extras/AnkhSVN/Check out a repository directory. Dann gibt man einfach die URL des Repository ein und den lokalen Pfad in dem die Dateien ausgecheckt werden sollen.

  1. 12. Juli 2007, 16:40 | #1

    Find ich echt klasse dein Tutorial!

    Ich denke das wird super mit Subversion!

Kommentare sind geschlossen