Control de versiones con Subversion y USVN

Subversion (SVN) es una herramienta de control de versiones, que funciona cómo un repositorio sobre un sistema de ficheros. Se trata de software libre, ya que utiliza la licencia Apache/BSD.

USVN es una interfaz web que nos permite crear y organizar los repositorios de Subversion.

Primero de todo debemos de cumplir con los requisitos del software, que es el siguiente:

  • PHP5 (A partir de la versión 5.3)
  • Apache2
  • php5-mysqlnd
  • mod_dav enable
  • mod_dav_fs enable
  • mod_rewrite enable
  • Añadir AllowOverride  en la configuración de Apache2
  • Subversion (SVN)
  • mod_authz_svn enable
  • mod_dav_svn enable

He utilizado un sistema operativo GNU/Linux Debian 7.6 para la instalación.

Vamos a ellos, primero instalamos Apache2 y PHP5

  1. apt-get -y install apache2 php5 php5-mysqlnd

Una vez instalado podemos comprobar la versión de PHP con el parámetro –version

 

usvn-install-software-01

En la siguiente parte habilitamos los módulos de Apache2: mod_dav, mod_dav_fs y mod_rewrite.

  1. a2enmod dav
  2. a2enmod dav_fs
  3. a2enmod rewrite

Una vez hecho esto reiniciamos Apache2

  1. service apache2 restart

Podéis ver el proceso en la siguiente imagen:

 

usvn-install-software-02

 

Instalamos Subversion. La versión que viene en los repositorios main de Debian

  1. apt-get -y install subversion

Aunque en principio no es necesario, yo utilizo el servidor MySQL que viene en los repositorios main

  1. apt-get -y install mysql-server mysql-common

Nos dirigimos a la página web de USVN y descargamos la versión que nos interese, aquí,

 

usvn-web-1

Nos dirigimos a la sección de descargas, para el artículo he descargado la versión 1.0.7

Antes de la descarga nos colocamos en el directorio /var/www/

  1. cd /var/www

Y descargamos el archivo con el comando wget

  1. wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz

Y descomprimimos

  1. tar xzvf 1.0.7.tar.gz

Asignamos los permisos al usuario del servidor Apache, www-data

  1. chown www-data:www-data /var/www/usvn-1.0.7 -R

Modificamos la configuración de Apache2, para que cargue por defecto nuestro servidor.

El primer paso es guardar el archivo default original:

  1. cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.back

Y editamos el archivo default:

  1. nano /etc/apache2/sites-available/default

La configuración de mi servidor es la siguiente. Sólo hay que modificar la parte superior de la configuración original.

usvn-apache2-default

El resto del fichero no hay que modificarlo.

Ahora tendríamos que reiniciar el servicio Apache2, pero antes de eso todavía nos queda por habilitar dos módulos.

Se trata de mod_authz_svn y mod_dav_svn. En Debian y derivados (Ubuntu) debemos de instalar primero el paquete libapache2-svn

(En versiones anteriores el paquete lleva el nombre libapache2-subversion)

  1. apt-get -y install libapache2-svn

Ya podemos habilitar ambos módulos:

  1. a2enmod authz_svn
  2. a2enmod dav_svn

Y podemos reiniciar el servicio:

  1. service apache2 restart

Supuestamente con todo esto ya tendría que funciona la interfaz web, pero no:

usvn-error-messages-mo

Investigando un poco en la red, he encontrado la página dónde indica cómo solucionarlo.

Debemos de modificar el archivo /var/www/usvn-1.0.7/app/bootstrap.php , y en la línea 67, descomentar «// exit(0);»

Con esto ya podemos volver a reiniciar Apache2, y así empezar la instalación vía web.

usvn-instalacion-web-01

En la siguiente ventana nos indica que hemos sido buenos, y hemos instalado todos los requisitos.

 

usvn-instalacion-web-02

 

Seleccionamos idioma y zona horaria.

 

usvn-instalacion-web-03

En la siguiente ventana leemos, y si creemos conveniente aceptamos la licencia del software.

Ahora vemos la información de los directorios usados por USVN

usvn-instalacion-web-04Al apretar el botón «Siguiente paso» me ha aparecido un mensaje indicando que el directorio /var/www/usvn-1.0.7/files no existía o tenía los permisos erroneos.

Para solucionarlo sólo hay que crearlo, asignar permisos y propietario.

  1. mkdir /var/www/usvn-1.0.7/files
  2. chmod 775 /var/www/usvn-1.0.7/files
  3. chown www-data:www-data /var/www/usvn-1.0.7/files -R

Y así podemos pasar a la siguiente ventana.

 

usvn-instalacion-web-06

Aquí he escogido la BBDD tipo MySQL. Sólo debemos de indicar nuestras credenciales y crear la base de datos.

usvn-instalacion-web-07

Indicamos las credenciales para nuestro usuario.

usvn-instalacion-web-08

Ya estamos apunto de finalizar.

Chequeamos actualizaciones, si así lo deseamos.

Con la información que nos suministra en la siguiente pantalla, creamos el fichero httpd.conf, si no existe, dentro de /etc/apache2/ en Ubuntu, y en /etc/apache2/conf.d en Debian.

usvn-instalacion-web-09

Editamos en Debian:

  1. nano /etc/apache2/conf.d//httpd.conf

Y en Ubuntu:

  1. nano /etc/apache2/httpd.conf

Y copiamos justo los mismo:

  1.   ErrorDocument 404 default
  2.     DAV svn
  3.     Require valid-user
  4.     SVNParentPath /var/www/usvn-1.0.7/files/svn
  5.     SVNListParentPath off
  6.     AuthType Basic
  7.     AuthName "USVN"
  8.     AuthUserFile /var/www/usvn-1.0.7/files/htpasswd
  9.     AuthzSVNAccessFile /var/www/usvn-1.0.7/files/authz

Y reinciamos Apache

  1. service apache2 restart

Y con esto y un bizcocho… ya tenemos la web lista para su uso.

 

usvn-instalacion-web-10

Accedemos con nuestras credenciales.

Una vez dentro nos señana el programa que no tenemos ningún proyecto creado.

usvn-instalacion-web-11

En el panel de administración podemos gestionar usuario, grupos y proyectos.

 

usvn-instalacion-web-12

Por hoy lo dejamos aquí.

En el próximo capítulo veremos cómo utilizar los repositorios y gestionar las versiones desde los usuarios locales.

Para el artículo me he servido de la información de las webs: Github USVN y Ubuntu Subversion Wiki

See you soon!!