You are on page 1of 9

“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 <ruta_a_apache>/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:

<Location /svnRespository/web>
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.


<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>

</Location>

En la primera línea: <Location /svnRespository/web> 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:

<LimitExcept GET PROPFIND OPTIONS REPORT>


Require valid-user
</LimitExcept>
** 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...