Vamos a implementar nuestro primer repositorio Subversion, haciendolo accesible vía http gracias a WebDav.
1
Instalamos Subversion y Apache.
apt-get install subversion apache2 libapache2-svn
2
Creamos el directorio donde vamos a guardar nuestro repositorio y otros archivos de configuración.
mkdir /home/svn
3
Creamos el directorio donde se van a guardar el repositorio.
mkdir /home/svn/repositorios
4
Creamos el directorio donde vamos a guardar las políticas de acceso a nuestro repositorio.
mkdir /home/svn/permisos
5
Nos paramos dentro de la carpeta de repositorios.
cd /home/svn/repositorios
6
Creamos nuestro repositorio.
svnadmin create proyecto
7
Configuramos en el virtual host elegido, el acceso web al repositorio. Para esto, vamos a agregar lo siguiente al archivo de configuración de nuestro sitio.
<location /proyecto>
DAV svn
SVNPath /path/a/mi/repositorio
</location>
8
Reiniciamos Apache.
/etc/init.d/apache2 reload
9
Ya podemos acceder con nuestro navegador al repositorio. Deberíamos poder ver lo siguiente.
Hasta acá, el repositorio ya está funcionando, pero vamos a dar unos pasos más para mejorar nuestra instalación.
10
Vamos a agregarle estilo a la pagina que se muestra vía http.
Nos bajamos los archivos svnindex.css y svnindex.xsl desde: http://svn.collab.net/repos/svn/trunk/tools/xslt/.
Esos dos archivos los vamos a guardar en la raíz de nuestro sitio.
Luego agregamos lo siguiente en la configuración del host.
<location /proyecto>
DAV svn
SVNPath /path/a/mi/repositorio
SVNIndexXSLT "/svnindex.xsl"
</location>
Recargamos la configuración de Apache y podremos ver nuestro repositorio con estilo.
11
Ahora vamos a sumar un poco de seguridad al repositorio.
Para esto vamos a usar htpasswd.
htpasswd -cb /etc/apache2/passwords usuario contraseña
Un detalle, es que cuando usemos el comando htpasswd, le indicamos el parámetro -c para que cree el archivo donde se guardan las contraseñas. Si necesitamos agregar nuevos usuarios, solamente le pasaremos el comando -b.
Si usáramos -c nuevamente, estaríamos sobrescribiendo el archivo en lugar de agregarle una nueva línea.
12
Para lograr que al acceder al repositorio nos pida validación, agregamos lo siguiente a la configuración del host.
<location /proyecto>
DAV svn
SVNPath /path/a/mi/repositorio
SVNIndexXSLT "/svnindex.xsl"
AuthType Basic
AuthName "Repositorio Proyecto"
AuthUserFile /etc/apache2/passwords
Require valid-user
AuthzSVNAccessFile /home/svn/permisos/proyecto.conf
</location>
13
Creamos el archivo proyecto.conf.
vi /home/svn/permisos/proyecto.conf
En ese archivo vamos a indicarle para el usuario que creamos en el paso 12, que permisos tendrá sobre el repositorio.
Para un usuario que va a trabajar con la totalidad del repositorio, seria:
[/]
usuario = rw
Si en cambio, queremos que el usuario pueda, por ejemplo, sólo leer para poder hacer un checkout, lo indicamos asi:
[/]
usuario = r
Con [/] le estamos dando acceso a la totalidad del repositorio. Podríamos indicar también a qué carpeta o carpetas del repositorio se puede acceder y en cuales se da permiso de escritura.
14
Ahora si, paso final, reiniciar el Apache.
/etc/init.d/apache2 reload
De ésta forma, tenemos implementado Subversion con WebDav.