Repositorio Subversion

Aunque la instalación de un servidor Subversion no es una tarea complicada en un sistema Linux, a menudo olvidamos los pasos que debemos seguir cada vez que creamos un nuevo repositorio. Esto es debido a que no es una tarea muy habitual. Si bien existen entornos de desarrollo integrados que a través de un escritorio permite la creación automática de repositorios (por ejemplo, el ofrecido por Clinker), cuando somos nosotros los que creamos el repositorio desde un terminal, hemos de seguir los siguientes pasos.

Logo Subversion

Partimos de que hemos ubicado nuestro repositorio de subversion (svn-repos) en /var. Es decir:

/var/svn-repos

Primero, creamos el contenedor para nuestro nuevo proyecto, al que llamaremos project_1

cd /var/svn-repos/
svnadmin create project_1

Como queremos acceder al repositorio a través de HTTP, hay que permitir que Apache pueda acceder a este nuevo repositorio. Lo más fácil es asignar al directorio recién creado el usuario y permisos que corresponde a Apache:

chown -R www-data:subversion /var/svn-repos/proyecto
chmod -R g+ws /var/svn-repos/proyecto

A continuación debemos habilitar y configurar WebDAV y SVN. Para ello, añadimos el siguiente código al archivo dav_svn.conf que ya existe en el directorio /etc/apache2/mods-available/:

sudo nano /etc/apache2/mods-available/dav_svn.conf

<Location /svn/project_1>
   DAV svn
   SVNPath /var/svn-repos/project_1

   Options FollowSymLinks
   order allow,deny
   allow from all
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user
</Location>

Como vemos, acabamos de indicar que accederemos a nuestro proyecto a través del path /svn/project_1, con lo que la URL de acceso quedará como http://host/svn/project_1, donde host corresponde a la dirección IP o nombre.dominio de nuestro servidor. También hemos establecido la configuración de seguridad dejando que la misma descanse en el archivo de usuarios dav_svn.passwd (podríamos haber elegido otro nombre). Es decir, cada acceso al repositorio va a requerir de un usuario válido definido en este archivo. Con el siguiente comando insertaremos a un usuario (y su contraseña) en el archivo, el que se creará de no existir.

cd /etc/apache2/
htpasswd -cm dav_svn.passwd usuario

Y ya está. Sólamente hay que recodar hacer esto por cada proyecto que creemos.