Subversion Server unter Windows


29.09.2009 09:10:51 - Coding


Versionierungstools bzw. Subversion ist vielen Programmierern sicher ein Begriff. Klar, man hat es mal genutzt, aber irgendwie ist es doch ein kleines Mysterium. Zumindest ging es mir bisher so. Da ich nun eigenverantwortlich für unseren Code zuständig bin, war es nur eine Frage der Zeit, bis ich mich auch mit diesem Thema beschäftigen musste. Und das war heute... ;)

 

Subversion



Wie bei vielen Projekten hab ich erstmal Google ausgequetscht, aber deutsche Tutorials sind da leider rar. Daher hab ich mich entschlossen, hier eine Anleitung zu posten, wie man schnell zu seinem eigenen Subversion Server im lokalen Netzwerk kommt.

Die Ausgangslage bei mir ist folgende: Ich habe einen Testserver mit Windows XP drauf sowie einen Windows Vista Client. Zum Programmieren verwende ich Eclipse mit PHPeclipse.

Zuerst einmal benötigt man folgende Dateien:
- Subversion
- SVNservice (optional, falls Subversion als Service laufen soll)
- TortoiseSVN (SVN Client mit Shell-Extension für den Explorer)

Zuerst installiert man Subversion auf dem Server. Es gibt verschiedene Installer, die Bindings für Perl, Python und co. mitbringen. Für den Standard-Gebrauch sind wir darauf nicht angewiesen. Ich habe daher "Setup-Subversion-1.5.6.msi" verwendet. Diese enthält noch die Apache Bindings, die man jedoch ignorieren kann, falls man WebDav nicht benötigt. Wichtig: Nach der Installation neu starten!

Anschließend installieren wir den TortoiseSVN-Client auf unserem Client Rechner. Man sieht gleich, dass sich Tortoise in das Kontext-Menü des Explorers einnistet.

Nach dem Neustart unseres Servers erstellen wir einen Ordner für unser Repository. Dieser enthält alle Änderungen und auch die Konfiguration für Subversion. Anschließend rufen wir die Komandozeile auf und tippen folgendes da rein:

svnadmin create "c:\repository"


Natürlich muss an Stelle von c:\repository der Pfad zu eurem eben erstellten Repository-Ordner sein. Wenn der Befehl erfolgreich durchläuft, werden mehrere Dateien und Ordner innerhalb des Repository Ordners erstellt. Sollte eine Fehlermeldung kommen, die besagt, dass "svnadmin" nicht gefunden werden kann, habt ihr euren Server wahrscheinlich nicht neu gestartet. Sollte der Fehler trotzdem auftauchen, sollte man überprüfen, ob der Programmpfad von Subversion in der PATH-Umgebungsvariable steht.

So, das war es eigentlich schon an Vorbereitung, also starten wir Subversion doch einfach mal:

svnserve --daemon --root "c:\repository"

Das Konsolenfenster sollte nun nicht geschlossen werden, da der Dienst sonst wieder beendet wird. Später machen wir daraus einen Windows-Service, also keine Panik!

Die Arbeit auf dem Server ist nun erstmal getan, wenden wir uns also dem Client zu:
Erstellt nun einfach irgendwo einen Ordner, in dem später eure zu versionierenden Dateien liegen sollen. Bei mir war es genau anders herum, denn ich hab ja bereits meine Dateien. In diesem Fall gehen wir in den Ordner, der unseren Dateien enthält. Innerhalb dieses Ordners vollführen wir einen Rechtsklick und klicken anschließend auf "SVN Checkout". Dann sehen wir

folgendes:

SVN Checkout


Bei "URL of repository" schreibt man einfach "svn://[name eures Servers] rein. Unter Checkout Directory sollte der Pfad zu eurem Projektordner stehen. Bei mir ist das ein Ordner, der alle Projekte enthält. So kann ich alle Projekte in einem Repository verwalten. Da ist es jedem selbst überlassen, wie man vorgeht...


Ok, nun haben wir unser Repository eingebunden. Schön, aber was anderes sieht man nun auch nicht ;) . Kann man auch nicht, da das Repository bislang auch leer ist. Also fügen wir doch einfach mal ein Projekt hinzu. Klickt dazu auf den gewünschten Ordner mit der rechten Maustaste --> TortoiseSVN --> Add.

SVN Add


Nun wird der Ordner auf alle enthaltenen Unterordner und Dateien gescannt und es wird geprüft, ob diese Dateien bereits im Repository sind oder nicht.

Im Anschluss kann man die Dateien anhaken, die hinzugefügt werden sollen und mit einem Klick auf OK den Vorgang starten. Nun werden die Dateien und Ordner mit Checksummen versehen und in das Repository aufgenommen. Nun sind die Dateien registriert. Um die aktuelle Version auch in Subversion zu hinterlegen, klicken wir rechts auf den Ordner, anschließend auf "SVN Commit" und dann auf "OK". Jetzt sieht man, wie die Dateiinhalte hochgeladen werden.

Jetzt ist die Installation abgeschlossen. Aber wie arbeitet man nun damit? Nun, der Vorgang ist eigentlich immer gleich:

Bevor man anfängt zu Arbeiten, klickt man rechts auf den entsprechenden Projektordner oder die entsprechende Datei und wählt "SVN Update". Darauf hin wird die aktuellste Version vom Subversion Server geladen und die vorhandene überschrieben.


SVN Update - Commit

Nun kann man die Datei mit jedem beliebigen Programm bearbeiten. Um die Versionierung nicht zu übertreiben, bleiben alle diese Änderungen nur auf dem lokalen Rechner. Erst, wenn man auf "SVN Commit" geht, wird die Datei oder der Ordner wieder zum SVN-Server geschickt und eine neue Version angelegt. Sollte jemand die Daten in dieser Zeit geändert haben, werden die Daten per Diff gegenübergestellt und der Benutzer muss entscheiden, welche Inhalte nun übernommen werden sollen.


Jetzt läuft der Subversion Server noch immer in dem kleinen Dos-Fensterchen, was auch nicht gerade die sauberste Lösung ist. Daher machen wir jetzt noch einen Windows-Service draus: mit SVNservice.

SVNservice bietet einen einfachen Installer und einen schnellen Konfigurations-Screen. Man gibt einfach den Pfad zum Repository sowie zum Programmordner von Subversion an. Optional kann man auch einen alternativen Hostnamen und Port angeben.

PS: Die Einbindung in Eclipse funktioniert am einfachsten per "Subclipse"...

Fazit: Mittels dieser Anleitung lässt sich schnell ein Subversion Server im lokalen Netzwerk aufsetzen. Wenn man die Konfigurationsdateien im Repository unter conf/svnserve.conf anschaut, ist es z.B. möglich, Subversion mit verschiedenen Benutzern und Passwörtern zu betreiben. Wer da weiter einsteigen möchte, sollte Dr. Google um Rat fragen...





Kommentare:



29.09.2009 - Surrogard (www)


Wer zusätzlich auch noch mit VisualStudio auf dem SVN-Server arbeiten will, der schaue sich AnkhSVN ( http://ankhsvn.open.collab.net/ ) an.

28.10.2009 - Marcus (www)


Hmm, wen siehst du als Zielgruppe für SVN Server unter Windows? "Kleine" Entwickler die das primär für sich nutzen und keinen eigenen Linux (V)Server haben? Denen würde ich eher ein verteiltes Versionskontrollsystem empfehlen. "Größeren" Entwicklern die nur einen Windowsserver haben? Da fände ich die Integration mit dem Indianer dann doch wichtig. Es ist auf jeden Fall ein gutes Tutorial, aber mir fällt so recht kein guter Grund ein, svnserve ausgerechnet auf Windows betreiben zu wollen.

28.10.2009 - Marcus (www)


Bugreport: Bei Kommentaren werden irgendwie alle Umbrüche entfernt :(

28.10.2009 - netzmensch


Also für mich als "kleinen" Entwickler ist es nicht schlecht. Da ich schnell in die neue Stelle einsteigen musste, war ich gezwungen, schnell eine funktionerende Lösung auf die Beine zu stellen. Auf jeden Fall bin ich damit um einiges schneller gewesen, als wenn ich eine Lösung mit Linux aufgesetzt hätte...Ansonsten gebe ich dir vollkommen recht ;) Zwecks Bug: muss ich mal lösen...



neuer Kommentar:


Name


Email


www


Text


Spamschutz: Bitte schreiben sie eine eins in das Feld!