Entorno de trabajo: Control de versiones – subversion.
Si te dedicas, como es mi caso, al desarrollo de aplicaciones no creo que haga falta convencerte de lo vital que es utilizar un sistema de control de versiones, el que sea.
En la actualidad, suelo utilizar es subversion, tanto por su potencia como por su soporte por parte de la comunidad.
Veamos como añadir a nuestro recién instalado servidor un sistema de control de versiones basado en apache y subversion.
Para hacer que los repositorios subversion de nuestro servidor esten accesibles desde el exterior podemos utilizar el "daemon" svnserve incluido con subversion o utilizar apache web server. Esta última forma es mucho más flexible a la hora de aplicar politicas de acceso y sistemas de autenticación de usuarios, motivo por el cual es el que vamos a utilizar en este pequeño tutorial.
El proceso completo no es complicado, pero tampoco trivial. Vayamos paso a paso:
Instalación de software
Utilizando yast instalaremos los paquetes subversion, subversion-doc, subversion-server, subversion-tools y sus dependencias:
Creación de carpetas para repositorios
linux-srv:~ # mkdir /srv/svn linux-srv:~ # mkdir /srv/svn/repos linux-srv:~ # mkdir /srv/svn/user_access/ linux-srv:~ # chown -R wwwrun.www /srv/svn
.
Configuración servidor web Apache
Para publicar un repositorio subversion utilizando apache es necesario hacer uso de los módulos mod_dav y mod_dav_svn. Para que apache haga uso de ellos es necesario activarlos:
linux-srv:~ # a2enmod dav linux-srv:~ # a2enmod dav_svn linux-srv:~ # a2enmod auth_digest
.
Editaremos el archivo /etc/apache2/conf.d/subversion.conf para que contenga:
<Location /svn> DAV svn SVNParentPath /srv/svn/repos </Location>
.
Control de acceso
A falta de un método mas robusto de autenticación de usuarios, nos conformaremos con usar HTTP Digest (al menos las claves no viajan en plano como en el caso de usar autenticación HTTP Basic).
En primer lugar crearemos un archivo que contendrá la lista de usuarios y sus claves de acceso:
linux-srv:~ # cd /srv/svn/user_access linux-srv:~ # htdigest2 -c passwd.digest linux-srv usuario
.
Para permitir el acceso a otros usuarios utilizaremos una sentencia muy simlar, ¡ojo! hemos quitado el "-c"
linux-srv:~ # htdigest2 passwd.digest linux-srv usuario2
.
Por último incluiremos en el archivo /etc/apache2/conf.d/subversion.conf las siguientes directivas:
<Location /> AuthType Digest AuthName "linux-srv" AuthUserFile /srv/svn/user_access/passwd.digest Require valid-user </Location>
.
Creacion de un nuevo repositorio
linux-srv:~ # svnadmin create /srv/svn/repos/nuevo_repositorio linux-srv:~ # chown -R wwwrun.www /srv/svn/repos/nuevo_repositorio/
.
Prueba final
Para que todos los cambios hechos, entren en funcionamiento reiniciaremos apache:
linux-srv:~ # rcapache2 restart
.
y verificaremos el acceso por HTTP desde el mismo servidor
linux-srv:~ # svn list http://localhost/svn/coa --username matutet
Authentication realm: <http://localhost:80> linux-srv
Password for 'usario':
repositorio/
.
Migración de repositorios
Por ultimo indicar que si necesitamos migrar repositorios ya existentes al nuevo servidor debemos utilizar el siguiente método:
- En la ubicacion actual del repositorio utilizar el comando
'svnadmin dump nombre_repositorio > svn.dump'. - Copiar el archivo 'svn.dump' al nuevo servidor y utilizar el comando
'svnadmin load nombre repositorio < svn.dump'
y despues asignar los permisos adecuados
'chown -R wwwrun.www nombre_repositorio'
NOTA: Esta forma descrita, utilizando svnadmin, es altamente recomendado ya que si simplemente copiamos el repositorio, haciendo un backup, puede que la operación no funcione adecuadamente si la versión de subversion utilizado en ambos servidores no es la misma. Lo digo por experiencia propia.
Imprimir este artículo
Aún no hay trackbacks.






