April 20, 2007

Subversion unter Mac OS X benutzen

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

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 moddavsvn 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:

Meldungen im Terminal nach erfolgreicher Installation

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:

Ordnerstruktur Import

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:

DAV svn SVNPath /usr/local/repos AuthType Basic AuthName "Stephans Subversion" AuthUserFile /etc/svn-auth-file Require valid-user

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:

/opt/local/bin

Quellen

Version Control with Subversion
Subversion lokal unter Mac OS X

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus