Este howto supone que tienes instalado subversion y apache y trata sobre como mostrar por el puerto http (80) en lugar de por svn (3690) los repositorios subversion mediante apache y el protocolo WebDAV

En primer lugar instalaremos el módulo que nos permitirá mostrar los archivos guardados en los repositorios subversion mediante Apache:
[root@prueba ~]# yum install mod_dav_svnsubversion
A continuación editaremos la configuración de Apache para indicar donde se encuentran nuestros repositorios y el tipo de autenticación que se usara para acceder a ellos

[root@prueba ~] cd /etc/httpd/conf.d/
[root@prueba ~] vim subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
        DAV svn
        SVNPath /var/www/svn/repos -> directorio donde se encuentran los repositorios svn
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf -> Fichero donde se encuentra los usuarios y passwords (recomendable que los passwords estén encriptados)
        Require valid-user
</Location>

Lo siguiente es crear los usuarios con el password cifrado. Esto se logra con el parámetro -m y al no existir el fichero se añade el paråmetro -c para crearlo

[root@prueba ~] htpasswd -cm /etc/svn-auth-conf usuario1
New password:
Re-type new password:
Adding password for user usuario1
[root@prueba ~] htpasswd -m /etc/svn-auth-conf usuario2 -> El paråmetro -c no se pone en esta ocasión al existir ya el fichero
New password:
Re-type new password:
Adding password for user usuario2

Si queremos realizar una autenticación basada en grupos y usuarios por repositorio añadimos la siguiente línea en el fichero subversion.conf:
AuthzSVNAccessFile /etc/svn-acl-conf

<Location /repos>
        DAV svn
        SVNParentPath /var/www/svn/repos
        AuthzSVNAccessFile /etc/svn-acl-conf
        AuthType Basic
        AuthName "Subversion repos"
        AuthUserFile /etc/svn-auth-conf
        Require valid-user
</Location>

Creamos el fichero  /etc/svn-acl-conf que consta de la siguiente sintaxis

[reponame:repopath]
usuario = permisos

Donde los permisos pueden ser r (lectura), rw (lectura y escritura)  o vacío, en cuyo caso no tendrå acceso ninguno. Por defecto no se da ningún permiso.

En este ejemplo el usuario juan tiene permiso de lectura y el usuario javier lectura/escritura en el repositorio "framework"
[framework:/]
juan =  r
javier = rw

Para crear grupos se indica de la siguiente manera

[groups]

staff = juan, javier

y se hace referencia con el signo (@)

[framework:/]
juan =  r
@staff = rw
Anuncios