Instalar Servidor de SVN en Ubuntu

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.

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:

$ sudo apt-get install subversion subversion-tools

Si vamos a utilizar 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:

$ a2enmod dav
$ a2enmod dav

y si no están instalados, los instalamos:

$ sudo apt-get install libapache2-svn

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):

$ sudo groupadd subversion

y para agregarle usuarios a el grupo recien creado:

$ sudo usermod -G subversion myuser1
$ 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:

$ sudo htpasswd -c /etc/apache2/dav_svn.passwd myuser1
$ sudo htpasswd -a /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 (si ya existiese el fichero, usaríamos -a para añadir al usuario). Los demás usuarios se añaden al fichero creado. Cada vez que agreguemos un usuario, nos irá pidiendo su contraseña y la confirmación de la misma.

A continuación creamos la carpeta donde ubicaremos los repositorios:

$ sudo mkdir -p /var/svn

Los repositorios se pueden crear en la carpeta que se quiera, en nuestro caso los creamos dentro de la carpeta /var/svn. Le damos los correspondientes permisos:

$ sudo chown -R www-data:subversion /var/svn/
$ sudo chmod -R 770 /var/svn/

Por último configuraremos Apache para que use los repositorios, configuramos el archivo que gestiona el módulo WebDAV de apache para el svn:

$ sudo gedit /etc/apache2/mods-available/dav_svn.conf

Y dentro del mismo archivo pegamos el siguiente código:

##
# SVN
#
<Location /svn>
DAV svn
SVNPath /var/svn
AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

o bien

    # dav_svn.conf – Example Subversion/Apache configuration
    #
    # For details and further options see the Apache user manual and
    # the Subversion book.
    # …
    # URL controls how the repository appears to the outside world.
    # In this example clients access the repository as http://hostname/svn/
    # Uncomment this to enable the repository,DAV svn
    # Set this to the path to your repository

    SVNParentPath /var/svn

    # The following allows for basic http authentication. Basic authentication
    # should not be considered secure for any particularly rigorous definition of
    # secure.

    # to create a passwd file
    # # rm -f /etc/apache2/dav_svn.passwd
    # # htpasswd2 -c /etc/apache2/dav_svn.passwd dwhedon
    # New password:
    # Re-type new password:
    # Adding password for user dwhedon
    # #
    # Uncomment the following 3 lines to enable Basic Authentication

    AuthType Basic
    AuthName “Subversion Repository Access”
    AuthUserFile /etc/apache2/dav_svn.passwd

    # Uncomment the following line to enable Authz Authentication
    # AuthzSVNAccessFile /etc/apache2/dav_svn.authz
    # The following three lines allow anonymous read, but make
    # committers authenticate themselves.
    Require valid-user

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.

$ sudo /etc/init.d/apache2 restart

Recuerda que si quieres agregar más usuarios al repositorios puedes hacerlo con el comando que vimos anteriormente:

$ sudo htpasswd -a /etc/apache2/dav_svn.passwd anotheruser

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).

Vamos a crear como ejemplo un repositorio llamado “proyecto”. Para ello creamos su carpeta y posteriormente creamos el repositorio y sus directorios trunk, tags y branches:

sudo mkdir -p /var/lib/svn/proyecto

sudo svnadmin create /var/lib/svn/proyecto
sudo svn mkdir /var/lib/svn/proyecto/trunk -m "Trunk"
sudo svn mkdir /var/lib/svn/proyecto/tags -m "Tags"
sudo svn mkdir /var/lib/svn/proyecto/branches -m "Branches"

Tras reiniciar apache, el repositorio debería estar accesible desde:

http://localhost/svn/proyecto

Si solamente utilizamos nuestro repositorio en una red local, no sería necesario password. Pero sino, podemos proteger nuestro código creando una cuenta como se describe en el fichero anterior:

$ sudo htpasswd -c /etc/apache2/dav_svn.passwd usuario

También hay que recordar darle permisos a Apache para que pueda acceder libremente a nuestro repositorio:

$ sudo chown -R www-data.www-data /var/lib/svn

Fuentes:
http://www.guia-ubuntu.org/index.php?title=Subversion
http://ubuntulife.wordpress.com/2007/05/29/instalar-un-servidor-de-subversion-en-ubuntu/
http://www.softwarelibre.net
http://esubuntu.wordpress.com
http://ingmmurillo.blogspot.com.es/2011/01/como-instalar-subversion-en-ubuntu.html
http://www.clubdesarrolladores.com/tips/mostrar/16-instalar-servidor-svn-en-ubuntu
http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav

2 comentarios en “Instalar Servidor de SVN en Ubuntu

  1. Pingback: Linux Tips | OscarC

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s