“INSTALACION DE UN SERVIDOR SUBVERSION EN WINDOWS XP”
Introducción Subversion es un sistema de control de versiones, al igual que el archiconocido CVS, pero que lo mejora en ciertos puntos. Las diferencias, a grandes rasgos, son que Subversion (al que pasaré a llamar SVN) puede encontrar las diferencias en archivos binarios, cosa que no puede hacer CVS. Otra bastante importante, es que se puede realizar un diff (mostrar las diferencias entre 2 archivos) sin tener que estar conectado al repositorio (SVN guarda una copia local de la última versión del repositorio sin los cambios que haga uno); y por último, SVN guarda el historial de la meta información de archivos y carpetas, es decir, en CVS si se cambiaba de nombre una carpeta, un archivo, se borraba alguno de éstos, simplemente desaparecía. SVN guarda toda esta meta información en el historial.
Instalación para Windows Pasaremos ahora a realizar la instalación de SVN en Windows. Primero, descargamos SVN para Windows de http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91FirefoxHTML\Sh ell\Open\Command
Una vez descargado, comenzamos la instalación.
Pinchamos sobre el ejecutable que acabamos de descargar para comenzar la instalación:
En este punto ya tenemos instalado SVN. El instalador crea una entrada automáticamente en el path del sistema con la ruta de los ejecutable de SVN.
Vamos a crear ahora un repositorio (en caso de que quieras portar un repositorio CVS a SVN tienes mucha información en el siguiente link http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=254&expandFolder =254&folderID=0FirefoxHTML\Shell\Open\Command ). Abrimos pues una ventana de símbolo de sistema, nos situamos en el directorio en el cual queremos crear el repositorio (para el ejemplo d:\servidores\svnRepo) y ejecutamos el siguiente comando:
>> svnadmin create web Web es el nombre que le quiero dar a mi repositorio, puesto que en él guardaré mis proyectos Web. Puedes crear tantos repositorios como quieras, o guardar todos tus proyectos en el mismo repositorio. Ya tenemos creado el repositorio. debería tener una estructura similar a ésta (puedes verlo tecleando >> dir /B /S web): \web\conf \web\dav \web\db \web\format \web\hooks \web\locks \web\README.txt \web\conf\authz \web\conf\passwd \web\conf\svnserve.conf \web\db\current \web\db\format \web\db\fs-type \web\db\revprops
\web\db\revs \web\db\transactions \web\db\uuid \web\db\write-lock \web\db\revprops\0 \web\db\revs\0 \web\hooks\post-commit.tmpl \web\hooks\post-lock.tmpl \web\hooks\post-revprop-change.tmpl \web\hooks\post-unlock.tmpl \web\hooks\pre-commit.tmpl \web\hooks\pre-lock.tmpl \web\hooks\pre-revprop-change.tmpl \web\hooks\pre-unlock.tmpl \web\hooks\start-commit.tmpl \web\locks\db-logs.lock \web\locks\db.lock SVN viene con un servidor, svnserve (al igual que CVS). Este servidor escucha el puerto 3690, y utiliza un protocolo propio que se designa parecido a CVS: svn:// o svn+ssh://.
Sin embargo, usaremos otro método para acceder a SVN: mediante Apache. Como sabrás, Apache en un servidor Web. ¿Qué tiene de bueno acceder a SVN mediante Apache? Principalmente dos cosas. Una, es que los accesos al servidor se realizan por el puerto 80, con lo que posiblemente no tengas que abrir ningún puerto. Además se pueden ver vía explorador Web los proyectos y su contenido (aunque esto se puede limitar como veremos más adelante). El segundo punto importante es que el plugin de SVN para Eclipse utiliza el acceso mediante Apache (más tarde veremos cómo se instala y configura). Si ya tienes instalado Apache, te habrá hecho unas pequeñas modificaciones en el archivo httpd.conf. Si lo acabas de instalar no te preocupes, ya que pasaremos a explicar dónde hacer los cambios y qué significan. Abre el archivo httpd.conf (situado en /Apache2/conf/) y busca la sección de LoadModules. Busca si tienes los siguientes LoadModules (si no los tuvieras añádelos en esa sección): LoadModule dav_svn_module "D:/servidores/Subversion/bin/mod_dav_svn.so" LoadModule authz_svn_module "D:/servidores/Subversion/bin/mod_authz_svn.so" LoadModule dav_svn_module "D:/servidores/Subversion/bin/mod_dav_svn.so" LoadModule authz_svn_module "D:/servidores/Subversion/bin/mod_authz_svn.so" Ten en cuenta que D:/servidores/.. es la ruta donde yo he instalado Subversion. Debes sustituir la ruta por la de tu sistema (y ¡¡cuidado!!, con la barra '/'). Estos módulos que se cargarán en Apache son los que realizan el acceso a SVN. Ahora tenemos que decirle a Apache dónde está la carpeta con el repositorio. Busca la
sección donde estan los 'Location' (posiblemente estén comentados en tu archivo. Para encontrarlos rápidamente, dale a buscar y pon como texto a buscar Location). Ahora añade una nueva localización escribiendo el siguiente texto: DAV svn SVNPath D:/servidores/svnRepo/web # Autenticación básica. AuthType Basic AuthName "Repositorio Subversion" AuthUserFile D:/servidores/Apache2/bin/usuarios.txt # Solo permitimos usuarios identificados en el fichero de passwords. # require valid-user # Solo permitimos usuarios identificados en el fichero de passwords # con nombre 'XXXXXXX' o 'YYYYYYY'. # require user XXXXXXX YYYYYYY # se permite lectura a todos, pero otras operaciones necesitan autenticación. Require valid-user En la primera línea: se establece la ruta desde la cual en el explorador se puede acceder al repositorio. En nuestro caso hemos puesto ésta (/svnRespository/web) y accederíamos desde el explorador como http://localhost/svnRepository/web. Puedes poner la ruta que te parezca mejor. La tercera línea, SVNPath D:/servidores/svnRepo/web indica la ruta física al directorio del repositorio en nuestro sistema, que hemos creado antes en esta ruta (pon aquí otra ruta si no lo instalaste aquí.). La siguiente sección marca parte de la seguridad de acceso al repositorio: # Autenticación básica. AuthType Basic AuthName "Repositorio Subversion" AuthUserFile D:/servidores/usuarios.txt Y la línea más interesante es la última de este trozo de código. En ella se indica el archivo de usuarios / claves que pueden tener más derechos en el repositorio. Para crear este archivo es fácil. Desde una ventana de símbolo de sistema accedemos a la ruta donde se encuentran los ejecutables de Apache (...\apache2\bin) y tecleamos lo siguiente: htpasswd -bc d:\servidores\usuarios.txt usuario claveUsuario
Mediante este comando se crea un fichero con nombres de usuario y claves codificadas con MD5 (un algoritmo de hash). Como es lógico, cambia 'usuario' por el nombre de usuario que quieras, y 'clave' por la clave que desees que tenga. Para añadir más usuarios que puedan acceder al repositorio, debes ejecutar: htpasswd -b d:\servidores\usuarios.txt usuario2 claveUsuario2 Observa que al añadir un usuario no le ponemos la bandera 'c', para que anexe el nuevo usuario al archivo que creó en la primera ejecución. De todas formas lo mejor es que investigues como se utiliza este comando para que veas las posibilidades que ofrece. Ya está todo listo para que funcionen SVN y Apache. Reinicia el servidor Apache para que los cambios en el httpd.conf se hagan efectivos y comprueba el correcto funcionamiento. Para ello abre una ventana de explorador de Internet y teclea http://localhost/svnRepository/web. Te tendrá que salir algo similar a esto:
Como verás, dado que aún no hemos añadido ningún proyecto al repositorio, no saldrá ninguno. Ten cuidado si no quieres que algún proyecto sea visible por Web, ya que habrá que quitar o comentar la sección: Require valid-user
** Nota importante: es probable que no te funcione Apache dado que suele haber problemas con las dependencias del módulo mod_dav_svn.so. Cómo solucionarlo puede depender de tu pericia con Windows, puedes buscar información en Google, que hay mucha, y sobre todo, deberías usar el programa depencyWalker (www.dependencywalker.com) y abrir el fichero comentado anteriormente (mod_dav_svn.so) que se encuentra en la carpeta bin del directorio donde instalaste Subversion, y el programa te mostrará qué dependencias le faltan, o qué no encuentra. Alguno de estos ficheros son dll del Apache. Lo que hice yo fue copiarlos a c:\windows\system32 y parece que funcionó. Pero ya te digo, investiga...