Repositorio SVN con WebDav en 14 simples pasos

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 sorbeescribiendo 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 usario 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.

A lo mejor te interese leer

8 thoughts on “Repositorio SVN con WebDav en 14 simples pasos

  1. Estimado Damián,

    Gracias por este post que explica paso a paso lo que hay que hacer.

    Lo que explicas tiene toda la pinta de ser muy útil y que tendré que aprenderlo para instalar Magento.

    Pero, tengo una petición:

    ¿Podrías explicar para qué sirve todo esto? Es decir, si fuera (que lo soy) un ignorante de lo que es un SVN, ¿qué relación tiene con Magento? ¿qué beneficios tiene? ¿desde dónde se opera?

    SVN para dummys!

  2. Hay varias partes en tu comentario.
    La ventaja de usar Subversion (u otro sistema de control de versiones), radica en la posibilidad de tener todo el código de un proyecto almacenado en un único lugar, permitiendo el trabajo simultáneo, y guardando una historia de todos los cambios hechos (con la posibilidad de volver a situarte en un punto determinado del proyecto).

    Claro está, es una explicación muy compacta y breve, pero si buscás conocer más, estaría bien que siguieras los links que acabo de dejar.
    Hasta acá lo referente a SVN.

    Con Magento en si mismo no tiene nada que ver.
    Subversion es una herramienta, y en mi caso, asi como con muchos otros proyectos, de diferentes tecnologías, utilizo Subversion como repositorio del código que trabajo con Magento.

    Ya cerrando, si bien el diseño por defecto de WordPress no ayuda, está bajo otra categoría.
    Es cierto que posteo mucho sobre Magento (paso muchas horas del día con la plataforma), pero no será sobre lo único.

  3. exelente trabajo Damian, decidi cambiar de eclipse a netbeens y esto me quedo como anillo al dedo,

    te felicito!!!

  4. Gracias.
    ¿El cambio de ide se debe a la ide en si misma o por algún otro motivo?.

  5. tuve problemas con el intercambio de llaves rsa,dsa entre mis servidores y cada vez que hacia un commit estaba poniendo 2 pass y en X server tenias 2 sistemas se me hizo bien molesto trate de buscar la solucion y llegue aca desde hoy uso webdav y netbeens

  6. Bueno, entonces ya tenés un problema menos.
    En breve espero estar agregando algunos posts más referentes a SVN sobre experiencias que me vienen siendo útiles.

  7. Hola. Soy un poco novato en todo esto, aunque la teoría me queda más o menos clara. Mis dudas vienen por la configuración de Apache, ya que no lo he administrado jamás.
    ¿Podrías concretar un poco más cuál sería el fichero de Apache que hay que modificar para incluir un nuevo virtualhost y dónde exactamente incluir el … ?

    La pretensión es usar subversion por mí y un compañero que estamos haciendo unas prácticas juntos y nos sería muy útil poder acceder via web (por ser el único camino habilitado en nuestro lugar de trabajo).

    Muchas gracias de antemano

  8. @Frandecai

    De distribución a distribución cambia levemente la forma de configurarlo, pero normalmente en /etc/apache2/sites-available vas a encontrar los archivos de cada vhost.
    En algunos casos están al final del archivo de configuración de Apache.

    Si sólo querés agregar el acceso al repositorio, podrías agregar la configuración explicada en el punto 7 al host por defecto.