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 proyecto7) 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.


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!
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.
exelente trabajo Damian, decidi cambiar de eclipse a netbeens y esto me quedo como anillo al dedo,
te felicito!!!
Gracias.
¿El cambio de ide se debe a la ide en si misma o por algún otro motivo?.
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
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.
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
@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.