In diesem Tutorial geht es darum, wie man mittels MacPorts (ehemals darwinports) und Mac OS X 10.4.3 einen Subversion-Server einrichtet, der prinzipiell via Internet von jedem Rechner zugänglich ist, aber nur von bestimmten Nutzern tatsächlich benutzt werden kann. Benötigt werden
- ein Computer mit Mac OS X (10.4.3 kam bei diesem Tutorial zum Einsatz)
- ein Internetzugang
- Grundlagenkenntnisse in Terminal.app
- sowie in der Versionsverwaltung
Benötigte Software installieren
darwinports
darwinports ermöglichen die Installation von Softwarepaketen mitsamt ihren Abhängigkeiten. Subversion benötigt nebenbei noch einen Webserver (Apache 2) mit dem mod_dav_svn Modul. Damit die Installation einfacher und bequemer verläuft, kommt das Portsystem zum Einsatz.
Auf der Webseite der darwinports (darwinports.opendarwin.org) befindet sich eine recht gute Erklärung, wie die Paketverwaltung zu installieren ist.
Subversion und der Apache
Sobald die darwinports-Infrastruktur steht, kann Subversion installiert werden. Hierzu werden Administratorrechte benötigt. Der Befehl lautet:
sudo port install subversion +mod_dav_svn
Für die nächsten Minuten gibt es nichts zu tun als abzuwarten. Wenn die Installation erfolgreich war, zeigt sich in etwa folgendes Bild:

Repository anlegen
Zur Arbeit mit Subversion wird ein Repository benötigt. Dieses kann prinzipiell an jeder beliebigen Stelle angelegt werden, da in diesem Beispiel das Repository nur über den Webserver angesprochen werden soll, erzeugen wir es an einem eher unauffälligen Ort: /usr/local/repos. Zuerst muss das Verzeichnis repos mit einem einzigen Befehl angelegt werden:
sudo mkdir /usr/local/repos
Das Repository wird anhand des Programms svnadmin erzeugt:
sudo svnadmin create /usr/local/repos
Jetzt fehlen nur noch Daten im Repository. Ich lege einen Ordner auf dem Desktop an, der importiert werden soll:

Zuerst wird der zu importierende Ordner angegeben, dann die Adresse des Repositorys. Jeder Commit bekommt eine Notiz, in diesem Fall lautet sie: “Eins”:
sudo svn import /Users/stephan/Desktop/stephan/ file:///usr/local/repos -m "Eins"
Da niemand außer dem Webserver (also dem User namens www) Zugriff auf das Repository haben muss, weisen wir die Rechte entsprechend zu:
sudo chown -R www /usr/local/repos/
Apache 2 konfigurieren
Die Konfiguration des Webservers ist zwar etwas umständlicher als die bisherigen Schritte, aber auch nicht weiter kompliziert. Eine Textdatei muss editiert und eine Passwortdatei angelegt werden.
Zunächst wird die Datei httpd.conf angelegt und im Editor geöffnet:
cd /opt/local/apache2/conf
sudo cp httpd.conf.sample httpd.conf
sudo vi httpd.conf
Anstelle des Editors vi kann auch jeder andere Texteditor (Textmate, Textwrangler, Smultron, jEdit) benutzt werden.
Zuerst ändern wir den Port, auf dem der Apache auf Anfragen wartet. Der voreingestellte Port 80 wird vom in Mac OS X enthaltenen Webserver bereits benutzt, also lassen wir Apache 2 auf dem alternativen Webserverport 8080 laufen. Die Zeile
Listen 80
muss geändert werden in:
Listen 8080
Desweiteren muss nach der Zeile
LoadModule dav_module modules/mod_dav.so
folgende Zeile hinzugefügt werden:
LoadModule dav_svn_module modules/mod_dav_svn.so
Am Ende der Datei müssen die Einstellungen für den Zugriff des Webservers auf das Subversion Repository hinzugefügt werden. In diesem Beispiel soll das Repository unter der Adresse http://127.0.0.1:8080/svn erreichbar sein, hierzu dient die Location-Anweisung:
<Location /svn> DAV svn SVNPath /usr/local/repos AuthType Basic AuthName "Stephans Subversion" AuthUserFile /etc/svn-auth-file Require valid-user </Location>
Der Titel des Repositorys lautet “Stephans Subversion”. Zugriff erhalten nur User, deren Login und Passwort in der Datei /etc/svn-auth-file gespeichert sind.
Passwortschutz für Repository einrichten
Wir wollen das Repository für zwei User zugänglich machen. Diese heissen stephan und fred. Um den ersten User anzulegen, benötigen wir htpasswd mit den Optionen c und m:
sudo htpasswd -cm /etc/svn-auth-file stephan
Nun muss das entsprechende Passwort zweimal eingeben werden.
Für jeden weiteren Benutzer lautet der Befehl:
sudo htpasswd -m /etc/svn-auth-file fred
Die Option -c zur Erzeugung einer neuen Datei ist überflüssig, sobald /etc/svn-auth-file existiert. Um die bestehende Datei also nicht zu überschreiben, muss sie bei allen weiteren Usern weggelassen werden.
Apache 2 starten
Es gibt zwei Möglichkeiten, den Apache 2 Webserver zu starten: manuell oder bei jedem Systemstart. Manuell lässt er sich starten durch
sudo /opt/local/apache2/bin/apachectl start
Die zweite Möglichkeit bedarf derzeit (darwinports < 1.2) noch etwas Handarbeit.
Das Verzeichnis /opt/local/etc/StartupItems/apache2 muss in das Verzeichnis /Library/StartupItems kopiert werden. Dann muss in der Datei /etc/hostconfig angegeben werden, dass apache2 beim Systemstart gestartet wird. Dies geschieht anhand der Zeile:
APACHE2=-YES-
Beim nächsten Neustart wird Mac OS X eine Meldung bezüglich fehlerhafter Sicherheitseinstellungen ausgeben, diese lassen sich auf Knopfdruck korrigieren. Daraufhin folgt ein weiterer Neustart und schon ist das System betriebsbereit.
Arbeiten mit Subversion
Jetzt ist das Repository einsatzbereit. Mittels der Kommandozeile im Terminal lassen sich jetzt Dateien ein- und auschecken. Etwas komfortabler geht die Versionsverwaltung mit einem Werkzeug wie svnX. Da svnX nicht von einer darwinports-Installation ausgeht, muss noch der Pfad zum ausführbaren Programm svn in den Einstellungen angepasst werden:

Quellen
Version Control with Subversion
Subversion lokal unter Mac OS X

May 18, 11:33 PM
Danke für das Tutorial. Aber was mache ich wenn mir svnX mir sagt, dass er den Pfad zum svn nicht finden kann?
Hilfe!! Mit Netbeans funzt alles problemlos.
May 19, 12:42 AM
Der letzte Screenshot im Artikel dürfte hier weiterhelfen. Entweder muss ein symbolischer Link auf /usr/local/bin erstellt werden (würde ich nicht machen) oder der Pfad in den Einstellungen von svnX muss angepasst werden.
May 22, 03:06 PM
Danke für das Tutorial!
Hat mir weiter geholfen. Mich stört nur, den Apache zwei mal laufen zu haben. Es sollte ja schon eine Möglichkeit geben den vorhandenen Apache auf zwei Ports lauschen zu lassen.
Gruss Stefan
May 22, 05:11 PM
Ja, eine solche Möglichkeit gibt es (wenn der vorhandene Apache der in OS X enthaltene ist). Allerdings weiß ich nicht, ob die DAV und SVN-Module in OS X 10.5.x bereits enthalten sind. Ansonsten müssen diese noch nachträglich gebaut werden, was ich persönlich lieber mit einem Ports-System mache.
Aug 27, 03:35 PM
Das DAV und SVN Modul für Apache sind nach der Installation von SVN vorhanden, jedoch weiß ich nicht genau, ob die vorher schon da waren. Beim pfad darauf achten, dass man die vorhandenen kopiert und nicht die aus dem Tut, denn von 10.4 zu 10.5 haben sich die Apache Pfade geändert.
httpd.conf und apachectl liegen auch an anderen Orten, bin gerade nicht am passenden Rechner, die 10.5er Pfade zu nennen.
Feb 3, 11:47 PM
Ich finde es noch wichtig anzumerken, dass man in allen IDEs nur die Quelldateien auschecken sollte. Viele Entwickler beachten das nicht und wundern sich dann, dass “nichts läuft” oder Fehler auftreten. Daher stehen auch immernoch ein paar wenige mit Subversion auf Kriegsfuß.
Ich habe dazu ein Tutorial gefunden, wo das Problem erklärt wird die Lösung beschrieben wird:
<a href=“http://geekroom.de/entwicklung/java/svn-checkout-in-netbeans/”>www.geekroom.de/entwicklung/java/svn-checkout-in-netbeans</a>