Repositorio SVN con WebDav en 14 simples pasos

Vamos a implementar nuestro primer repositorio Subversion, haciendolo accesible vía http gracias a WebDav.

1

Instalamos Subversion y Apache.

apt-get install subversion apache2 libapache2-svn

2

Creamos el directorio donde vamos a guardar nuestro repositorio y otros archivos de configuración.

mkdir /home/svn

3

Creamos el directorio donde se van a guardar el repositorio.

mkdir /home/svn/repositorios

4

Creamos el directorio donde vamos a guardar las políticas de acceso a nuestro repositorio.

mkdir /home/svn/permisos

5

Nos paramos dentro de la carpeta de repositorios.

cd /home/svn/repositorios

6

Creamos nuestro repositorio.

svnadmin create proyecto

7

Configuramos en el virtual host elegido, el acceso web al repositorio. Para esto, vamos a agregar lo siguiente al archivo de configuración de nuestro sitio.

<location /proyecto>
    DAV svn
    SVNPath /path/a/mi/repositorio
</location>

8

Reiniciamos Apache.

/etc/init.d/apache2 reload

9

Ya podemos acceder con nuestro navegador al repositorio. Deberíamos poder ver lo siguiente.

Acceso web a nuestro repositorio

Hasta acá, el repositorio ya está funcionando, pero vamos a dar unos pasos más para mejorar nuestra instalación.

10

Vamos a agregarle estilo a la pagina que se muestra vía http.

Nos bajamos los archivos svnindex.css y svnindex.xsl desde: http://svn.collab.net/repos/svn/trunk/tools/xslt/.

Esos dos archivos los vamos a guardar en la raíz de nuestro sitio.

Luego agregamos lo siguiente en la configuración del host.

<location /proyecto>
    DAV svn
    SVNPath /path/a/mi/repositorio
    SVNIndexXSLT "/svnindex.xsl"
</location>

Recargamos la configuración de Apache y podremos ver nuestro repositorio con estilo.

Vista web del repositorio con esiltos

11

Ahora vamos a sumar un poco de seguridad al repositorio.

Para esto vamos a usar htpasswd.

htpasswd -cb /etc/apache2/passwords usuario contraseña

Un detalle, es que cuando usemos el comando htpasswd, le indicamos el parámetro -c para que cree el archivo donde se guardan las contraseñas. Si necesitamos agregar nuevos usuarios, solamente le pasaremos el comando -b.

Si usáramos -c nuevamente, estaríamos sobrescribiendo el archivo en lugar de agregarle una nueva línea.

12

Para lograr que al acceder al repositorio nos pida validación, agregamos lo siguiente a la configuración del host.

<location /proyecto>
    DAV svn
    SVNPath /path/a/mi/repositorio
    SVNIndexXSLT "/svnindex.xsl"
    AuthType Basic
    AuthName "Repositorio Proyecto"
    AuthUserFile /etc/apache2/passwords
    Require valid-user
    AuthzSVNAccessFile /home/svn/permisos/proyecto.conf
</location>

13

Creamos el archivo proyecto.conf.

vi /home/svn/permisos/proyecto.conf

En ese archivo vamos a indicarle para el usuario que creamos en el paso 12, que permisos tendrá sobre el repositorio.

Para un usuario que va a trabajar con la totalidad del repositorio, seria:

[/]
usuario = rw

Si en cambio, queremos que el usuario pueda, por ejemplo, sólo leer para poder hacer un checkout, lo indicamos asi:

[/]
usuario = r

Con [/] le estamos dando acceso a la totalidad del repositorio. Podríamos indicar también a qué carpeta o carpetas del repositorio se puede acceder y en cuales se da permiso de escritura.

14

Ahora si, paso final, reiniciar el Apache.

/etc/init.d/apache2 reload

De ésta forma, tenemos implementado Subversion con WebDav.