Esta anotación es para recordar como crear un repositorio de control de versiones con Subversion y Trac(como sistema de seguimiento de errores y gestión de proyectos), siempre normalmente uso Debian para estos menesteres.
sudo apt-get install -y trac apache2 libapache2-mod-python \
libapache2-svn python-setuptools subversion-tools \
python-subversion python-dev build-essential graphviz \
htmldoc enscript;
La ubicación esta a criterio de donde ocupen donde este.
sudo mkdir /var/lib/trac;
sudo mkdir /var/lib/svn;
El esqueleto del proyecto.
sudo mkdir /tmp/project;
sudo mkdir /tmp/project/branches;
sudo mkdir /tmp/project/tags;
sudo mkdir /tmp/project/trunk;
Se crean el/los proyectos, se hace el import inicial.
sudo svnadmin create /var/lib/svn/project_1 --fs-type fsfs;
sudo svn import /tmp/project file:///var/lib/svn/project_1 -m "initial import";
rm -Rf /tmp/project;
Se crean los usuarios.
sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin;
sudo htpasswd -m /etc/apache2/dav_svn.passwd user1;
sudo htpasswd -m /etc/apache2/dav_svn.passwd user2;
sudo htpasswd -m /etc/apache2/dav_svn.passwd user3;
Se asignan permisos para la lista de usuarios.
sudo chown www-data:www-data /etc/apache2/dav_svn.passwd;
Se procede a la configuración mínima del proyecto con Trac.
/usr/bin/trac-admin /var/lib/trac/project_1 initenv;
Se asignan permisos a el/los repositorios.
sudo find /var/lib/svn/project_1 -type f -exec chmod 660 {} \;
sudo find /var/lib/svn/project_1 -type d -exec chmod 2770 {} \;
sudo find /var/lib/trac/project_1 -type f -exec chmod 660 {} \;
sudo find /var/lib/trac/project_1 -type d -exec chmod 2770 {} \;
sudo chown -R root:www-data /var/lib/trac;
sudo chown -R root:www-data /var/lib/svn;
Este seria la configuración del VirtualHost usando Apache: /etc/apache2/sites-enabled/trac (que debería ser un enlace simbólico apuntando a /etc/apache2/sites-available/trac).
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot /var/www
ErrorLog /var/log/apache2/error.trac.log
CustomLog /var/log/apache2/access.trac.log combined
<LocationMatch /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/lib/trac/
PythonOption TracUriRoot /trac/
PythonOption PYTHON_EGG_CACHE /tmp/
</LocationMatch>
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
Para la autenticación.
/etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn
SVNListParentPath On
AuthType Basic
AuthName "Repositorio subversion"
AuthUserFile /etc/apache2/dav_svn.passwd
SVNAutoversioning on
Require valid-user
</Location>
Habilitamos módulos necesarios para Apache.
sudo a2enmod dav;
sudo a2enmod dav_fs;
sudo a2enmod python;
sudo a2dissite default;
sudo a2ensite trac;
Reiniciamos Apache si es necesario.
sudo /etc/init.d/apache2 reload;
o
sudo /etc/init.d/apache2 force-reload;
en última instancia :(.
sudo /etc/init.d/apache2 restart;