Étant donné une configuration Subversion / Apache typique utilisant SVNParentPath, avec des référentiels hébergés sous /svn/
comme ceci:
<Location /svn>
DAV svn
SVNParentPath /srv/source/svn/repos
SVNReposName "Subversion Repository"
AuthzSVNAccessFile /srv/source/svn/authz
Satisfy Any
AuthType Basic
AuthBasicProvider file
AuthName "Subversion Repository"
AuthUserFile /srv/source/svn/htpasswd
Require valid-user
</Location>
Existe-t-il un moyen de remplacer cette configuration pour des référentiels spécifiques sans avoir à les héberger sur un chemin différent? Autrement dit, est-il possible d'ajouter un Location
bloc comme celui-ci ...
<Location /svn/my_special_repo>
SVNPath /srv/source/svn/repos/my_special_repo
AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>
... et la remplacer par la configuration fournie dans le
Location
bloc pour /svn
? Mes tentatives pour ce faire avec la configuration ci-dessus ont rencontré des erreurs étranges et inutiles dans le journal des erreurs Apache, telles que:
[Wed Feb 02 11:28:35 2011] [error] [client 10.10.209.120]
(20014)Internal error: Can't open file '/srv/source/svn/repos/svn/format':
No such file or directory
Tout cela semble être la façon dont mod_dav_svn me dit que je ne peux pas faire ce que j'essaie de faire. Je suis ouvert aux solutions ou alternatives!
EDIT : Eh bien, je peux voir que cette question a suscité beaucoup d'enthousiasme parmi les lecteurs. Pour mémoire, je pourrais finir par générer des configurations par référentiel pour tous nos référentiels existants, puis abandonner la SVNParentPath
configuration basée. La configuration Apache par repo est minimale, en particulier en utilisant quelque chose comme mod_macro ; la partie difficile divisera le fichier authz global. Si vous l'avez déjà fait, les conseils sont appréciés.
Réponses:
Je déteste voir ma propre question languir là dans la liste des questions sans réponse, alors voici ce que nous avons fait:
Dans notre configuration de serveur principale, nous avons:
Nous avons adopté ce qui suit
mod_macro
pour reproduire ce comportement pour les nouveaux référentiels:Le
RewriteRule
permet à la configuration du référentiel de remplacer la<Location /svn/>
configuration principale qui correspondrait autrement à la demande.Avec cela en place, il devient relativement facile d'adopter la configuration d'authentification et d'autorisation par référentiel (au lieu du
htpasswd
fichier global utilisé ici).la source