Der Vorteil eines WebDav - Pepositories gegenüber eines SSH- Zugangs liegt in der Multiuser- Fähigkeit: Mit WebDav können viele User das gleiche Repository benutzen, und das Subversion generierte change log zeigt die unterschiedlichen Usernamen.
Um WebDav und Subversion unter SuSe 10.2 überhaupt zum Laufen zu bekommen, muß man das Packet Subversion-Server installieren.
Darin verbergen sich die Apache- Module mod_dav_svn und mod_authz_svn
Wenn man nach der Installation dann das zweifelhafte Vergnügen hat, das YAST nicht mehr die Installation des HTTP- Servers zuläßt (?), muß man die Module von Hand in den Server reinfrickeln:
Eine brauchbare Repository - Configdatei entsteht beim Packetinstallieren in /etc/apache2/sysconfig.d/ . Diese ist gemäß den im folgenden gewählten Verzeichnissen anzupassen:
/etc/apache2/sysconfig.d/subversion.conf
# Example configuration for a subversion repository # see /usr/share/doc/packages/subversion for the full documentation # <IfModule mod_dav_svn.c> <Location /svn/red> DAV svn SVNPath /var/local/repos/red # Limit write permission to list of valid users. <LimitExcept GET PROPFIND OPTIONS REPORT> # Require SSL connection for password protection. # SSLRequireSSL AuthType Basic AuthName "RED Revison Control" AuthUserFile /var/local/password Require valid-user </LimitExcept> </Location> </IfModule>
Zurzeit setzt das subversion-Paket kein Repository auf, man muss es manuell erzeugen. Eine mögliche Stelle für ein Repository ist in /var/local/repos/svn.
Erzeugen des Verzeichnisses
# mkdir -p /var/local/repos/svn/red
und der Repository Datenbank:
# svnadmin create /var/local/repos/svn/red
In die WebDav - Configuration schreibt man zweckmäßigerweise das Eltern- Verzeichnis, um so mehrere Repositories anlegen zu können
Trac dagegen benötigt ein Verzeichnis, was NICHT im gleichen Verzeichnis des Repositories liegen darf. Überlappen sich diese beiden Verzeichnisse, geht der Zugriff übers Web ziemlich in die Hose…
Also z.B.
# mkdir -p /var/local/repos/trac/red
Dies wird dann ebenfalls Apache beigebracht:
/etc/apache2/conf.d/trac.conf
<IfModule mod_alias.c> Alias /trac /var/local/trac </IfModule> <Directory /var/local/trac> Options +Indexes +Multiviews -FollowSymLinks IndexOptions FancyIndexing \ ScanHTMLTitles \ NameWidth=* \ DescriptionWidth=* \ SuppressLastModified \ SuppressSize order allow,deny allow from all </Directory> <Location /trac/red> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /var/local/trac/red PythonOption TracUriRoot /trac/red # PythonDebug on </Location>
Wenn's irgendwie nicht funktioniert, kann man mit
PythonDebug on </Location>
die überaus hilfreiche Debug- Funktion aktivieren
Und letztlich braucht man noch ein Verzeichnis für die Ergebnisse, welches ganz normal von Apache lesbar sein soll und die Ausführung von PHP erlauben muß
# mkdir -p /var/local/repos/res/
/etc/apache2/conf.d/redjobs.conf
## ## RED Outpt files ## <IfModule mod_alias.c> Alias /red /var/local/res </IfModule> <Directory /var/local/res> Options +Indexes +Multiviews -FollowSymLinks +ExecCGI -Includes IndexOptions FancyIndexing \ ScanHTMLTitles \ NameWidth=* \ DescriptionWidth=* # SuppressLastModified \ # SuppressSize order allow,deny allow from all </Directory>
Nun sind die Verzeichnisse für den WWW Server schreibbar zu machen:
# chown -R wwwrun:www /var/local
Um den Zugriff auf das Repository mittels Nutzerauthentifizierung zu ermöglichen, wird subversion und DAV mit Hilfe der passenden Configurations- Datei in Apache eingebunden:
WICHTIG: Das Subversion/DAV- verwaltete Verzeichnis darf nirgendwo anders in der Apache- Konfiguration verwendet werden (auch nicht z.B. als Alias). Dies führt sonst zu einer schwer verständlichen Fehlermeldung (301 Permanenty Removed) und zu einer langen Debug- Nacht vor'm Rechner….
Danach erzeugen Sie eine Nutzerauthentifizierungsdatei mit dem Kommando:
htpasswd2 -c /var/local/password ein-Nutzer
Sollen neue Mime-types ausgegeben werden, muß die Mime- config datei ergänzt und der Server danach neu gestartet werden:
/etc/apache2/mime.types: model/x3d+xml x3d
Starten Sie Apache2 neu und Ihr neues Subversion Repository wird unter der URL http://hostname/repos/project1 verfügbar sein.
Wir folgen den Instruktionen von http://en.opensuse.org/TRAC und installieren die dort genannten Packete.
Dann patchen wir das Track packet mit https://bugzilla.novell.com/show_bug.cgi?id=457674 (der dort gezeigte Patch passt aber nicht mehr zum aktuell im Trac- Packet enthaltenen Source..)
Folgen dann dem Kochrezept aus /usr/share/doc/packages/trac/README.SUSE.html und /usr/share/doc/packages/subversion/README.SuSE
Zusätzlich muß man noch mod_Python in der Apache- Konfiguration aktivieren und TRAC_MOD_PYTHON in ''/etc/.
Und last not least muß man im angelegten svn- Verzeichnis die Schreibrechte für das dav- Verzeichnis für den Webserver-User setzen. Das ist zwar so auch im o.g. SuSe- Howto beschrieben, aber zu dem Zeitpunkt, zu dem dies laut HowTo geschehen soll, gibt es das Dav- Verzeichnis noch gar nicht.
Wie man Commit- Scripte erzeugt, findet sich am besten unter Aufrüsten einer Diskstation zum RED- Server
Will man Subversion in der Kommandozeile auf dem Firmenrechner benutzen, weil die grafischen Frontends wie RapidSVN Admin- Rechte zum Installieren benötigen, die man meistens gar nicht hat, dann muß SVN auch mitgeteilt werden, durch welchen Proxy es überhaupt „nach aussen“ auf den Repository- Server gelangen kann.
Dazu legt man im Verzeichnis %APPDATA%\subversion die Datei SERVERS an oder man ändert die evt. schon vorhandene Datei. Die relevanten Einträge sind dabei:
[global] http-proxy-host=12.34.56.79 http-proxy-port=83
Man kann aber evt. auch die Registry über VBS verändern:
Set WshShell = CreateObject( "WScript.Shell" ) WshShell.RegWrite "HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Servers\global\", 0, "REG_DWORD" WshShell.RegWrite "HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Servers\global\http-proxy-host", "19.12.1.44", "REG_SZ" WshShell.RegWrite "HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Servers\global\http-proxy-port", "83", "REG_SZ" WshShell.RegWrite "HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Servers\global\#http-proxy-username", "", "REG_SZ" WshShell.RegWrite "HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Servers\global\#http-proxy-password", "", "REG_SZ"