14 de marzo de 2010

Instalando un repositorio de Subversion (en Debian Squeeze)

Estos pasos fueron realizados con la versión testing de Debian Squeeze, pero deberían servir como punto de partida. También debo señalar que estos pasos fueron pensado para facilitar el acceso de los usuarios, y no tanto por la seguridad.

Creación del repositorio

Como usuario root creamos un directorio donde estará el repositorio, por ejemplo:
# mkdir /var/svn-repos
Creamos el repositorio propiamente dicho:
# svnadmin create /var/svn-repos/test_repo

Ajustar permisos del repositorio

Para que el repositorio pueda ser usado por varios usuarios tenemos que ajustar algunos permisos. Primero creamos un grupo, donde agregaremos a aquellos usuarios que van a poder acceder al repositorio. Por ejemplo:
# addgroup development
Ahora agregamos los usuarios al grupo creado:
# adduser juan development
# adduser luis development
Ajustamos los permisos del repositorio:
# chown -R www-data:development /var/svn-repos/*
# chmod -R g+w /var/svn-repos/*
(Este ultimo comando se podría mejorar a find . -perm -u=w -print0 | xargs -0 chmod g+w, de manera que solo agregamos permisos de escritura solo a aquellos archivos que ya lo tienen)

Accediendo al repositorio

Ahora podemos acceder al repositorio a través de ssh:
$ svn co svn+ssh://hostname/var/svn-repos/test_repo
Para evitar que debamos responder repetidas veces la passphrase conviene utilizar ssh-agent con una clave privada. Si queremos acceder al repositorio por http primero tenemos que crear una base de datos con los usuarios permitidos:
# htpasswd -c -m /etc/apache2/dav_svn.passwd juan
# htpasswd -m /etc/apache2/dav_svn.passwd luis
La primera linea crea el archivo, la siguiente sirve para agregar los demás usuarios. Ahora modificamos el archivo /etc/apache2/mods-available/dav_svn.conf agregando:
<Location /test_repo>
   DAV svn
   SVNPath /var/svn-repos/test_repo
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user
</Location>
Recargando la configuración de apache con # invoke-rc.d apache2 reload, podemos acceder al repositorio como usuario:
$ svn co http://hostname/test_repo
También podremos acceder desde un navegador, con nuestro usuario y password, al repositorio desde la dirección http://hostname/test_repo.

Instalando ViewVC

La página de acceso por web es bastante simple, si queremos algo con más funcionalidad podemos instalar ViewVC. Editamos el archivo /etc/viewvc/viewvc.conf. Dentro de la sección [general] agregamos una linea así:
svn_roots = test_repo : /var/svn-repos/test_repo
Opcionalmente: podemos comentar la linea que comienza con cvs_roots, a menos que hayamos instalado un repositorio Cvs. También podemos habilitar la opción root_as_url_component. Creamos un archivo /etc/viewvc/apache.conf con la configuración para apache. Este archivo contiene la siguiente linea:
ScriptAlias /viewvc /usr/lib/cgi-bin/viewvc.cgi
Agregamos este archivo al directorio con las configuraciones de apache y recargamos:
# ln -sf /etc/viewvc/apache.conf /etc/apache/conf.d/viewvc.conf
# invoke-rc.d apache2 reload
Una vez terminado los pasos anteriores tenemos un interfaz web más bonita que se puede acceder desde: http://hostname/viewvc/test_repo.

Referencias: