martes, enero 26, 2010

Usar svn sobre ssh

Hace tiempo que vengo buscando de como usar Subversion para el control de código fuente de un proyecto a través de ssh, sin necesidad de instalar WebDAV. Es mucho más sencillo y puedo disponer de la arquitectura de clave pública / privada, sin necesidad de montar un servidor web y sobre él el Apache para dar soporte WebDAV o bien el servidor svnserve a través del inetd.

Para poder usar el ssh, aparte de estar corriendo en el servidor, necesitamos tener la ruta del repositorio y permisos para poder acceder al mismo con el usuario que usemos para acceder a la máquina. En este caso, no estoy usando un repositorio compartido, sino uno propio en una máquina a la que tengo acceso, por lo cual no tengo necesidad de usar un repositorio compartido.

Para acceder al repositorio lo que hay que hacer es usar la url de acceo svn+ssh para acceder al repositorio remoto. Así, por ejemplo si el PATH absuluto de un repositorio es /var/lib/svn en la máquina myhost, y el módulo que deseemos hacer un checkout del módulo llamado programa, lo que se debe de hacer es la siguiente secuencia de órdenes:

svn co svn+ssh://myhosts/var/lib/svn programa

Si la autentificación se ha montado en el ssh usando contraseñas, el ssh nos pedirá la contraseña, y se bajará una copia de trabajo del repositorio programa, que grabará en un directorio con el mismo nombre.

Decir que una vez que tengamos una copia de trabajo, no es necesario añadir la URL completa para realizar las diferentes operaciones con subversion. Eso sí, a menos que se cree un diseño de autentificación con claves públicas y privadas, cada vez que realicemos una operación con el ssh, nos pedirá la contraseña de acceso.

En caso de que se necesite opciones especiales para pasar al ssh, por ejemplo, para indicar el puerto en el que está escuchando el servidor ssh al cual nos queremos conectar, se puede usar la variable de entorno SVN_SSH para indicar las diferentes opciones que se deseen usar. Por ejemplo, supongamos que el servidor ssh al cual desee conectarse está en el puerto 10000 y que el usuario que utilice sea user_svn, establecemos la variable de entorno de la siguiente manera:

export SVN_SSH='ssh -l user_svn -oPort=10000'

Technorati Tags:

No hay comentarios: