Ofrecer múltiples métodos de acceso al repositorio

Le hemos enseñado a acceder a un repositorio de muchas maneras diferentes. Pero, ¿es posible—o seguro—acceder a su repositorio mediante múltiples métodos simultáneamente? La respuesta es afirmativa, siempre y cuando planifique un poco las cosas.

En cualquier instante, estos procesos pueden requerir acceso de lectura y escritura a su repositorio:

El problema más común que se encuentran los administradores es con la propiedad y permisos del repositorio. ¿Tiene cada proceso (o usuario) en la lista anterior permisos para leer y escribir los ficheros de la base de datos Berkeley? Asumiendo que tiene un sistema operativo tipo Unix, una opción simple sería colocar a cada usuario potencial del repositorio en un nuevo grupo svn, y hacer que el repositorio al completo esté poseído por este grupo. Pero ni si quiera eso es suficiente, porque un proceso puede escribir los ficheros de la base de datos usando una máscara de permisos hostil—aquella que impida el acceso a otros usuarios.

Así que el siguiente paso tras el establecimiento de un grupo común para los usuarios del repositorio es forzar a todos los procesos que acceden al repositorio a usar una máscara de permisos aceptable. Para los usuarios que acceden al repositorio directamente, puede envolver el programa svn en un script cuyo primer paso sea ejecutar umask 002 y después ejecute el programa cliente svn auténtico. Puede escribir un script de envoltorio similar para el programa svnserve, y añadir el comando umask 002 al propio fichero de arranque de Apache, apachectl. Por ejemplo:

$ cat /usr/local/bin/svn

#!/bin/sh

umask 002
/usr/local/subversion/bin/svn "$@"

Hay otro problema común en sistemas tipo Unix. A medida que se usa un repositorio, la base de datos Berkeley ocasionalmente crea nuevos ficheros de registro para sus transacciones. Incluso si el repositorio completo pertenece al grupo svn, estos nuevos ficheros no pertenecerán necesariamente al mismo grupo, lo cual crea de nuevo problemas de permisos para sus usuarios. Un buen método para corregir esto es activar el bit de grupo SUID en el directorio db del repositorio. Esto causa que todos los ficheros de registros creados tengan el mismo grupo que el directorio padre..

Una vez haya saltado por estos aros, su repositorio debería ser accesible por todos los procesos necesarios. Puede que parezca un poco lioso y complicado, pero los problemas de tener múltiples usuarios compartiendo acceso de escritura a ficheros comunes son clásicos, pocas veces solucionados de manera elegante.

Afortunadamente, la mayoría de los administradores de repositorios no tendrán nunca la necesidad de tener configuraciones tan complejas. Los usuarios que desean acceder a repositorios que residen en la misma máquina no están limitados a usar el las URLs de acceso file://—típicamente pueden contactar con el servidor HTTP de Apache o svnserve usando el nombre de servidor localhost en sus URLs http:// o svn://. Y mantener múltiples procesos servidores para sus repositorios de Subversion es probablemente un dolo de cabeza más que algo necesario. ¡Le recomendamos que escoja el servidor que se ajuste mejor a sus necesidades y que se limite a él!