Websvn kann mehrere Repositories in verschiedenen Unterverzeichnissen darstellen, allerdings muss man sich entscheiden: Alle Repositories aller Unterverzeichnisse aufs mal oder nur Repositories eines einzelnen Unterverzeichnisses.
Bei uns im Betrieb hat jede Abteilung (Informatik, Physik, …) ihre Repositories in eigenen Verzeichnissen auf dem Server. Websvn unterstützt zwar mehrere parentPath und stellt alle SVN-Repositories in diesen Verzeichnissen dar, will man aber auch noch einzelne Ansichten für die Abteilungen machen wird es schwer. Lösung: Der parentPath wird an Hand der URL gesetzt.
Unter Debian kann die Datei /etc/websvn/svn_deb_conf.inc direkt missbraucht werden. In anderen Distributionen muss eventuell am Schluss der Datei config.inc folgendes Codesnippet eingefügt und danach für die Änderungen gebraucht werden:
if ( file_exists("/etc/websvn/svn_sup_conf.inc") ) {
include("/etc/websvn/svn_sup_conf.inc");
}
?>
Nun soll an Hand des Pfades der /etc/websvn/svn_deb_conf.inc parentPath gesetzt werden:
- /websvn
- Alle Repositories
- /websvn/informatik
- Alle Repositories der Abteilung Informatik
- /websvn/physik
- Alle Repositories der Abteilung Physik
Dafür muss man in der oben konfigurierten Datei folgendes zum Besten geben (bei mehr Abteilungen einfach intelligent erweitern):
$repository=dirname($GLOBALS['HTTP_SERVER_VARS']['PHP_SELF']);
// echo "::: $repository :::";
switch($repository) {
case "/websvn/informatik":
case "/websvn/physik":
$reppath="/data/svn/repositories/".substr(dirname($GLOBALS['HTTP_SERVER_VARS']['PHP_SELF']),8)."/"; // "/websvn/" entfernen
//print "::: $reppath :::"; exit(1);
$config->parentPath($reppath);
break;
default:
$config->parentPath("/data/svn/repositories/informatik");
$config->parentPath("/data/svn/repositories/physik");
break;
}
?>
Der Apache muss dies natürlich auch noch mitkriegen. Die /websvn/ URL-Teile müssen dort konfiguriert werden (site-available oder .htaccess) und das wärs dann:
Alias /websvn /usr/share/websvn
Alias /websvn/informatik /usr/share/websvn
Alias /websvn/physik /usr/share/websvn
<Location /websvn>
# DO FUNKY (AUTHENTICATION) STUFF HERE
<IfModule mod_php4.c>
php_flag magic_quotes_gpc Off
php_flag track_vars On
</IfModule>
</Location>