yet another useless homepage

We don't cut. We expand.

Subversion unter Mac OS X benutzen

| 6 Kommentare

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:

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:

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

/opt/local/bin

Quellen

Version Control with Subversion
Subversion lokal unter Mac OS X

Author:

Kommentare

Verfasse einen Kommentar

Pflichtfelder sind markiert *.
Textile Hilfe

*


6 Kommentare

  1. 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.

  2. 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.

  3. 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

  4. 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.

  5. 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.

  6. 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>

  7. Verfasse einen Kommentar

    Pflichtfelder sind markiert *.
    Textile Hilfe

    *