En este post mostraremos como instalar un servidor de subversion en Ubuntu.
Para empezar, explicaremos brevemente qué es subversion para los que no lo saben. Subversion es un software de control de versiones diseñado especialmente para mantener bajo control y versión el código fuente, la documentación, etc. de una aplicación. Se lo conoce también como svn por ser ese el nombre de la herramienta cuando se ejecuta desde la línea de comandos. Además, subversion puede trabajar a través de internet, con lo cual facilita la colaboración de los equipos de desarrollos que se encuentran distantes geográficamente. Yo personalmente lo he utilizado en una gran mayoría de desarrollo de aplicaciones web con gran comodidad.
Bien, instalemosnos el servidor de subversion...
Lo primero que haremos será instalar las herramientas necesarias y comprobar si nuestro Ubuntu ya tiene instalado algunos modulos necesarios. Para instalar las herramientas necesarias:
Si utilizaremos svn a través de internet (lo cual es una de sus grandes cualidades) necesitaremos comprobar que Apache tenga instalado los módulos dav y dav_svn, para esto, verificamos si ya los tenemos instalados:
root@mylinux:~$ a2enmod dav
y si no están instalados, los instalamos:
Luego crearemos un grupo y los usuarios necesarios para manejar los permisos que tengan que ver con subversion. Para crear el grupo (en este caso lo llame subversion, pero puedes llamarlo como quieras):
y para agregarle usuarios a el grupo recien creado:
root@mylinux:~$ sudo usermod -G subversion myuser2
El siguiente paso será crear los archivos que contendrán los usuarios anteriores con sus passwords para poder utilizar svn, para ello:
root@mylinux:~$ sudo htpasswd /etc/apache2/dav_svn.passwd myuser2
La primera línea lleva la opción -c por la simple razón de que crea el fichero. Los demás usuarios se añaden a el fichero creado. Cada vez que agreguemos un usuario, nos irá pidiendo su contraseña y la confirmación de la misma.
A continuación crearemos el repositorio donde se versionará nuestro proyecto, para ello, creamos la carpeta donde ubicaremos el repositorio y creamos este último:
root@mylinux:~$ sudo svnadmin create /var/www/SVN
Como seguramente te has dado cuenta tú puedes crear el repositorio en la carpeta que desees, yo en mi caso lo cree dentro de la carpeta /var/www. Le damos los correspondientes permisos:
root@mylinux:~$ sudo chmod -R 770 /var/www/SVN/
Por último configuraremos Apache para que use los repositorios, configuramos el archivo que gestiona el módulo de apache para el svn:
Y dentro del mismo archivo pegamos el siguiente código:
## # SVN # <Location /svn> DAV svn SVNPath /var/www/SVN AuthType Basic AuthName "Repositorio Subversion del proyecto" AuthUserFile /etc/apache2/dav_svn.passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Si deseamos que el modo lectura no este accesible para cualquiera, (ya sea porque nuestro proyecto sea confidencial o no queramos que sea visto desde fuera, o lo que sea) basta con reemplazar la sección:
<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>
por
Require valid-user
Necesitamos reiniciar apache para que tome la nueva configuración.
Recuerda que si quieres agregar más usuarios al repositorios puedes hacerlo con el comando que vimos anteriormente:
Y si queremos crear nuevos repositorios podemos repetir lo visto anteriormente, creando el fichero de contraseñas con otro nombre (seguridad), y añadiendo al final del fichero /etc/apache2/mods-available/dav_svn.conf la configuración del nuevo servidor (seguramente cambia el path al fichero de contraseñas y el path al propio repositorio).
Bueno eso es todo, espero que les sirva.
Fuente: http://www.softwarelibre.net


6 Comentarios:
Eduardo:
07 de Abril de 2010 a las 08:40:01Muy buen tutorial, sigue así
Eduardo:
07 de Abril de 2010 a las 08:45:52Hola en la última parte veo que se repite esto, no esta mal ?? "Si deseamos que el modo lectura no este accesible para cualquiera, (ya sea porque nuestro proyecto sea confidencial o no queramos que sea visto desde fuera, o lo que sea) basta con reemplazar la sección: Require valid-user por Require valid-user "
hasheado:
07 de Abril de 2010 a las 13:17:15@Eduardo: gracias por el feedback, ahi corregí la parte que se repetía. Saludos..
lucas:
21 de Septiembre de 2010 a las 19:20:48Hola, buen post! Si tengo conexion a internet (como son la mayoria de los ISP) con ip dinamica como hace? si alguien se conecta a traves de internet le tengo que pasar mi ip cada vez que me conecto?
lucas:
21 de Septiembre de 2010 a las 19:21:22Hola, buen post! Si tengo conexion a internet (como son la mayoria de los ISP) con ip dinamica como hace? si alguien se conecta a traves de internet le tengo que pasar mi ip cada vez que me conecto?
hasheado:
29 de Septiembre de 2010 a las 04:19:05@lucas: no, no le tienes que pasar tu IP cada vez que te conectas, debes realizar un par de configuraciones a tu router/modem para que sea accedido desde afuera, puedes buscar en internet como configurar tu modelo de router/modem.