Dada una configuración típica de Subversion / Apache usando SVNParentPath, con repositorios alojados de /svn/
esta manera:
<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>
¿Hay alguna forma de anular esta configuración para repositorios específicos sin tener que alojarlos en una ruta diferente? Es decir, ¿hay alguna forma de agregar un Location
bloque como este ...
<Location /svn/my_special_repo>
SVNPath /srv/source/svn/repos/my_special_repo
AuthzSVNAccessFile /srv/source/svn/repos/my_special_repo/conf/authz
</Location>
... y tiene que anular la configuración proporcionada en el
Location
bloque para /svn
? Mis intentos de hacer esto con la configuración anterior se han encontrado con errores extraños e inútiles en el registro de errores de Apache, como:
[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
Todo esto parece ser la forma de mod_dav_svn de decirme que no puedo hacer lo que estoy tratando de hacer. Estoy abierto a soluciones o alternativas!
EDITAR : Bueno, puedo ver que esta pregunta ha generado mucha emoción entre los lectores. Para el registro, lo que puedo terminar haciendo es generar configuraciones por repositorio para todos nuestros repositorios existentes, y luego abandonar la SVNParentPath
configuración basada. La configuración de Apache por repo es mínima, especialmente usando algo como mod_macro ; La parte difícil será dividir el archivo global de autenticación. Si ha hecho esto antes, se agradecen los consejos.
Respuestas:
Odio ver mi propia pregunta languideciendo allí en la lista de preguntas sin respuesta, así que esto es lo que hicimos:
En nuestra configuración de servidor principal, tenemos:
Adoptamos lo siguiente
mod_macro
para replicar este comportamiento para nuevos repositorios:El
RewriteRule
permite la configuración de repositorio para anular la<Location /svn/>
en la configuración principal que de otro modo que coincida con la petición.Con esto en su lugar, resulta relativamente fácil adoptar la configuración de autenticación y autorización por repositorio (en lugar del
htpasswd
archivo global utilizado aquí).fuente