De antemano advierto que solo se configurará Subversion para tener acceso vía web, esto por razones diversas, por lo general, los IDE's con los que trabajamos poseen plug-in's que acceden a nuestros repositorios de esta manera, por lo que no es necesario tener en ejecución el servidor svnserve para tener acceso a nuestros repositorios, bien desde nuestra red o bien desde Internet.
Se asume que ya se tiene instalado apache, en mi caso lo tengo instalado vía wamp versión 2.1e.Este trae:
- apache versión 2.2.17
- php versión 5.3.3
- mysql versión 5.5.8
- PhpMyadmin versión 3.2.0.1
- SQLBuddy versión 1.3.2
Para instalarlo basta con siguiente, siguiente, siguiente; a menos que quieras cambiar la dirección de instalación de subversion, la deberían tener en C://archivos de programas/Subversion.
Yo en lo particular lo he instalado en la carpeta de instalación de wamp, C:\wamp\bin\subversion\Subversion.Ya instalado Subversion, haremos los siguientes ajuste:
- Tomamos los dos archivos .so que se encuentran en la carpeta bin de la instalación de subversion, en mi caso C://wamp/bin/subversion/Subversion/bin y los copiamos en la carpeta modules de nuestra instalación de apache C:\wamp\bin\apache\Apache\modules. A diferencia de otros tutoriales que se consiguen en la web
- Editamos el archivo httpd.conf, ubicado en la carpeta conf de la instalación de apache C:\wamp\bin\apache\Apache\conf, buscamos la sección de LoadModule y la linea LoadModule dav_module modules/mod_dav.so descomentarla.
comentada
#LoadModule dav_module modules/mod_dav.so
descomentada
y al final de esta sección le añadimos las siguientes dos lineas (puede ser en el lugar que queramos):
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so - Ahora nos dirigimos al final del archivo agregamos la siguiente linea:
Include conf/extra/httpd-subversion.conf
Este archivo será el que utilicemos para crear la seguridad y el acceso a nuestros repositorios vía web. - Pues bien, vamos a crear el archivo httpd-subversion.conf en la carpeta ubicada en C:\wamp\bin\apache\Apache\conf\extra, este archivo contendrá la siguiente información:
- Después de todo esto, necesitamos crear el archivo de usuarios que podrán acceder a nuestros repositorios, tal como se especificara en el punto anterior, le colocaremos el nombre de usuarios.conf, este archivo lo colocaremos en la carpeta raíz de apache C:/wamp/bin/apache/Apache, aunque puede ir en el lugar que mejor no parezca. Para esto hacemos win+r escribimos cmd y nos abre la consola de MS-DOS (tambien se puede hacer inicio->ejecutar->cmd) y escribimos los siguiente:
C:\wamp\bin\apache\Apache\bin\htpasswd -cm "C:\wamp\bin\apache\Apache\usuarios.conf" administrador
nos solicitará la contraseña para el usuario administrador dos veces. Si queremos agregar nuevos usuarios solo tendremos que ejecutar la siguiente linea - Por otro lado tenemos el acceso a los repositorios a través de lo que se llama rutas de acceso, este archivo lo crearemos al igual que en el punto anterior en la carpeta C:/wamp/bin/apache/Apache con el editor de texto de nuestra preferencia, en él colocaremos la siguiente información:
[aliases]
administrador = CN=Nombre del administrador,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
usuario1 = CN=Nombre del Usuario1,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
usuariodev = CN=Nombre del Usuariodev,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
usuariodoc = CN=Nombre del usuariodoc,OU=area de trabajo,DC=grupo de trabajo,DC=empresa
[groups]
administratores = &administrador, &usuario1
desarrolladores = &usuariodev
documentadores = &usuariodoc
invitados = anonymous, anonimo
# Regla de acceso por defecto para TODOS los repositorios
# Todo el mundo puede leer, los administradores pueden escribir.
[/]
* = r
@administrador = rw
# Dar a los documentadores acceso de escritura
# a todas las carpetas de documentación
[miproyecto:/trunk/doc]
@documentador = rw
[miproyecto:/trunk]
@administrador = rw
@desarrollador = rw
@documentador = r
usuariodev = rw
[miproyecto:/branches]
@administrador = rw
@desarrollador = rw
usuariodev = r
[miproyecto:/tags]
@administrador = rw
@desarrollador = rw
@documentador = r
usuariodev = r
[miotroproyecto:/]
@administrador = rw
@desarrollador = rw
@documentador = rw
Nota: este es un ejemplo para visualizar algunas combinaciones que se pudieran hacer en este archivo.
<location /svn>
# Le dice a Apache qué módulo será responsable de servir esa URL - en este caso, el módulo de Subversion.
DAV svn
# Para Subversion 1.3 y superiores, esta directiva habilita el listado de todos los repositorios disponibles bajo SVNParentPath.
SVNListParentPath on
# Activa la versión automática de WebDAV sin un cliente SVN.
SVNAutoversioning on
# Opciones de indexacion.
Options Indexes MultiViews IncludesNoExec
# Le dice a Subversion que busque repositorios en C:/ruta/de/mis/repositorios.
SVNParentPath C:/ruta/de/mis/repositorios
# Utilizado para mejorar la visualización desde un navegador de web.
SVNIndexXSLT /svnindex.xsl
# Se utiliza para activar la autenticación básica, es decir, Usuario/contraseña.
AuthType Basic
# Se utiliza cuando aparece el diálogo de autenticación como información para indicar que se necesita su autenticación.
AuthName "Mis Repositorios"
# Especifica qué archivo de contraseñas se utiliza para la autentificación.
AuthUserFile C:/wamp/bin/apache/Apache2.2.17/usuarios.conf
# Lugar del archivo de Acceso para las rutas dentro del repositorio de Subversion.
#AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf
# Obliga a apache a solicitar autenticación usuario/contraseña
Require valid-user
</location >Para mayor información de como configurar esta sección pueden referirse a la siguiente dirección.
Nota: En <location /svn>, /svn (puede ser cualquier nombre), es el nombre con el que accederemos vía web, es decir, http:/<monbre de mi servidor>/
/svn
C:\wamp\bin\apache\Apache\bin\htpasswd -m "C:\wamp\bin\apache\Apache\usuarios.conf" nuevousuarioNótese que en esta ocasión solo se ha colocado la opción -m y no -cm; esto es porque la opción c crea el archivo que le hemos colocado, para más información refiérase a la documentación de Subversion aquí.
Nota: En el punto 5 la linea #AuthzSVNAccessFile C:/wamp/bin/apache/Apache2.2.17/acceso.conf aparece comentada, esto es porque por alguna razón que desconozco por el momento, apache no está permitiendo acceder a los repositorios a través de los grupos definidos; mientras resuelvo el problema se mantendrá comentada.Nota: En el mismo punto 5 la linea #SVNIndexXSLT /svnindex.xsl también esta comentada, este archivo es un compendio de 2 archivos el svnindex.xsl y svnindex.css; estos archivos van en la carpeta que indica la directiva DocumentRoot del archivo de configuración httpd.conf de Apache. Los archivos se pueden conseguir en la web con solo escribir svnindex.xsl