Cómo montar un repositorio subversion, con Apache, para que sea accesible remotamente

Ingredientes

  • subversion
  • apache2
  • apache2-utils
  • libapache2-svn

Crear el repositorio

Un buen sitio es /var

root@example:/var# mkdir svn
root@example:/var# cd svn
root@example:/var/svn# svnadmin create repo

Servir el repo con apache

Lo más sencillo es editar el fichero /etc/apache2/mods-available/dav_svn.conf. Tienes que añadir un bloque similar a éste:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo
</Location>

Ahora hay que asegurarse de que el módulo DAV_SVN está activado. Normalmente estará activado automáticamente, pero si no es tu caso, se hace con:

# a2enmod dav_svn

Permisos

Hay que permitir que Apache pueda leer y escribir en el repositorio:

# chown -R root.www-data /var/svn
# chmod -R g+rw /var/svn

Cargar los cambios

No se te olvide…

# /etc/init.d/apache2 reload

Acceso remoto

El repositorio es accesible, para clientes subversion, webdav o navegadores web convencionales, a través de:

http://example.com/svn/myrepo/

Con esto tendrás un repositorio complemente público. Todo el que quiera podrá acceder tanto para descargar como para subir ficheros. Como eso normalmente no es lo deseable, sique leyendo…

Repositorio privado

Si lo que quieres es que solo unos usuarios concretos puedan acceder al repositorio tienes que definirlo de este modo:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo

  AuthType Basic
  AuthName "My Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  Require valid-user
</Location>

La sistaxis es análoga a la que se utiliza en Apache para restringir el acceso a un directorio. El fichero /etc/apache2/dav_svn.passwd es un fichero de claves típico de Apache. Para añadir usuarios utiliza el método habitual:

# htpasswd2 /etc/apache2/dav_svn.passw _usuario_

En este caso es muy recomendable habilidar SSL en el servidor Apache, pues de otro modo la contraseña viajaría ‘en claro’ a través de la red.

Acceso restringido

Otra posibilidad (muy común en el mundo del software libre) es tener un repositorio accesible para todo el mundo, pero sólo modificable por ciertos usuarios. En este caso la configuración sería algo como:

<Location /svn/myrepo>
  DAV svn
  SVNPath /var/svn/repo

  AuthType Basic
  AuthName "My Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

Referencias



blog comments powered by Disqus