La vamos a hacer cortita… Abstenerse de comentarios del tipo “GIT es mejor”, “Hubieras instalado GIT”, “SVN está deprecado” etc, etc…

Un personaje pidió tener un servidor SVN, así que se le instaló y estos son los pasos a seguir.

En resumen vamos a instalar Apache 2 + DAV + SubVersion + Trac sobre un servidor Debian Wheezy y vamos a asumir que los archivos de SVN y Trac los vamos a dejar en /mnt/storage

1.- Instalamos los paquetes necesarios

1
apt-get install python-setuptools trac subversion libapache2-svn libapache2-mod-python
2.- Activamos el modulo de apache dav_fs

1
a2enmod dav_fs
Esto activará también los módulos dav y dav_svn por que son dependencias.

3.- Creamos un directorio con la estructura que llevarán nuestros repositorios por defecto.

1
2
3
mkdir-p/mnt/storage/plantilla_repo/branches
mkdir-p/mnt/storage/plantilla_repo/tags
mkdir-p/mnt/storage/plantilla_repo/trunk
4.- Creamos el archivo que contendrá los usuarios y contraseñas para acceder tanto al repositorio SVN como a la web de Trac.

1
2
htpasswd -c/etc/apache2/svn.passwd usuariofoo
htpasswd /etc/apache2/svn.passwd usuariobar
OJO, primero es con “-c” para crear el archivo y luego SIN “-c” para agregar otro usuario, si usan “-c” nuevamente el archivo se sobrescribirá.

5.- Ahora creamos o editamos el archivo de configuración del sitio web en apache, en este caso editaremos el default site.

1
nano/etc/apache2/sites-enabled/000-default
Y agregamos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

    DAV svn
    SVNParentPath /mnt/storage/svn
    SVNAutoversioning on
    AuthType Basic
    AuthName “Subversion Repository”
    AuthUserFile /etc/apache2/svn.passwd
    Require valid-user


    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir /mnt/storage/trac/
    PythonOption TracUriRoot /trac
    AuthType Basic
    AuthName “Trac”
    AuthUserFile /etc/apache2/svn.passwd
    Require valid-user

6.- Creamod el directorio para los proyectos en Trac

1
mkdir/mnt/storage/trac
Ahora creamos nuestro primer proyecto

7.- Creamos el repocitorio SVN e importamos el directorio que tiene la plantilla con la estructura por defecto.

1
2
3
4
5
svnadmin create /mnt/storage/svn/myproject –fs-type fsfs
svn import/mnt/storage/plantilla_repo file:///mnt/storage/svn/Proyecto1 -m“Importacion inicial”
find /mnt/storage/svn/Proyecto1 -type f |xargschmod600
find /mnt/storage/svn/Proyecto1 -type d |xargschmod2770
chown-Rf root.www-data /mnt/storage/svn/Proyecto1
8.- Creamos el proyecto en Trac

1
2
3
4
trac-admin /mnt/storage/trac/Proyecto1 initenv
find /mnt/storage/trac/Proyecto1 -type f |xargschmod600
find /mnt/storage/trac/Proyecto1 -type d |xargschmod2770
chown-Rf root.www-data /mnt/storage/trac/Proyecto1
9.- Reiniciamos apache

1
service apache2 restart
4. Agregamos un usuario con permisos de administrador al proyecto en Trac, este debe estar en el archivo svn.passwd que creamos anteriormente

1
trac-admin /mnt/storage/trac/Proyecto1
Esto abrirá una shell donde se pueden ejecutar los comando para Trac, ejecutamos lo siguiente para asignar al administrador.

1
Trac [/mnt/storage/trac/Proyecto1]> permission add usuariofoo TRAC_ADMIN
Con esto estaríamos listos y ya pueden acceder al proyecto en Trac en la url, por ejemplo, http://dominio.com/trac/Proyecto1 y para el SVN http://dominio.com/svn/Proyecto1, logeandose con los usuarios que agregamos en el svn.passwd