6

Instalando un servidor SVN en Windows

En esta guía explicaré los pasos que hay que seguir para instalar un servidor de SVN en una máquina Windows 2000/XP/2003/…

Para hacer está guía me he basado en esta otra: Mere-Moments Guide to installing a Subversion server on Windows.

Preámbulos

Cuando en una empresa hay muchos proyectos, una forma muy fácil de mantener el orden entre el caos es usar un sistema de control de versiones. Éste nos permitirá almacenar todos los cambios que se produzcan en el código, y gracias a él podremos recuperar una versión antigua, o ver todo el historial del proyecto para comprobar que líneas se han ido modificando a lo largo de su vida.

Un sistema de control de versiones realiza otras funciones mucho más complejas, permite llevar en paralelo una versión de desarrollo y otra de producción, de forma que podemos fusionar ficheros; por ejemplo si hemos corregido un bug en producción y queremos aplicar el parche a la versión de desarrollo.

En el mercado hay muchos servidores de control de versiones, he manejado varios pero me quedo con el Subversion, sin descartar el mítico CVS; de echo, el SVN es una evolución de éste.

Ambos sistemas de control de versiones tienen gran cantidad de clientes gráficos para casi cualquier sistema operativo, lo que los hace ideales para empresas con gran diversidad de hardware.

Si os interesa, os digo el enlace de una comparativa de unos sistemas de control de versiones, tanto libres como gratuitos: Version Control System Comparison.

Servidor

Instalando el servidor

Primero tenemos que conseguir la versión más reciente de subversion y descargarla, nos bajaremos el fichero con el nombre svn-x.y.z-setup.exe, y lo ejecutaremos.

Luego iremos a Panel de Control > Sistema > Opciones avanzadas, pulsaremos en Variables de entorno y añadimos la siguiente Variable de sistema:

SVN_EDITOR=C:WindowsNotepad.exe

Aceptamos y el sistema estará listo para hacer el segundo paso.

Configurando el servidor

Lo primero que haremos será crear el repositorio donde se alojarán los proyectos. Así que lo primero que haremos será crear un nuevo directorio, por ejemplo: C:svn_repos.

Luego abriremos una terminal y ejecutaremos la siguiente orden:

svnadmin create "C:svn_repos"

Si todo ha ido bien, al acceder al directorio svn_repos veremos se han creado 5 directorios y 2 ficheros.

Accederemos a la carpeta C:svn_reposconf”, editaremos el fichero: svnserver.conf.


[general]
anon-access = read
auth-access = write
password-db = passwd

y el fichero: passwd, donde pondremos los nombres de los usuarios, con sus contraseñas, que podrán acceder al SVN.


[user]
fer=fer12

Ejecutando el servidor

Existen dos formas de ejecutar el servidor, una manual y otra automáticamente al arrancar el sistema. Antes de configurar la segunda forma, conviene asegurarse de que todo funcione correctamente.

Para ejecutar manualmente el servidor, tenemos que escribir el siguiente comando desde un terminal de texto:

svnserve --daemon --root "C:svn_repos"

Una vez comprobado que no se queje, cerramos la terminal para finalizar la ejecución del servicio.

Para ejecutar el SVN como servicio, primero tenemos que descargar el SVNService.zip, descomprimirlo en el mismo directorio donde se encuentre el comando SVNSERVE (por defecto estará en “C:Archivos de ProgramaSubversionbin”), y abrir una consola de texto:


CD <directorio donde se haya descomprimido el SVNService.zip>
SVNService -install --daemon --root "C:snv_repos"

Finalmente, accedemos al Panel de control > Herramientas administraticas > Servicios, buscamos el servicio llamado SVNService, le hacemos doble click y seleccionamos en Tipo de inicio: Automático, pulsamos en Iniciar para que se ejecute el servicio y aceptamos el cuadro de diálogo.

Y ya tendremos nuestro sistema de control de versiones instalado y funcionando.

Nota, para desinatalar el servicio ejecutaremos: SVNService -remove

Actualización 26-11-2006: según comenta Luis Franco en un comentario, SVN incorporará el servicio que hace de servidor en la versión 1.4.2.

Cliente

Como ya he dicho al principio, existen muchas utilidades para manejar SVN, pero yo me centraré en TortoiseSVN, que es un fork de TortoiseCVS, y me gusta porque es muy fácil de manejar, es cómodo y se integra perfectamente en el explorador de ficheros de Windows.

Nos bajaremos la última versión del programa (si tenéis un Windows 9x o NT4 mirar esto) y también descargaremos el pack de idiomas e instalaremos primero el programa y luego el idioma y reiniciaremos la máquina.

Por último, nos queda configurar el TortoiseSVN, haremos click con el botón secundario y accederemos a TortoiseSVN > Settings, seleccionaremos nuestro idioma y aceptaremos el diálogo.

Ahora nos quedará importar todos nuestros proyectos, la URL del repositorio sería la siguiente: “svn://IP/…/nombre_proyecto”.

Os recomiendo que para familiarizaros con esta herramienta consultéis el fichero de ayuda, es muy completo, pero básicamente lo que siempre usaréis será esto:

  • Actualizar: Descarga la última versión de un proyecto.
  • Comprobar: Actualiza los cambios que hayamos hecho al proyecto para que se actualice el repositorio.
  • Añadir: Añade un nuevo fichero o directorio al proyecto.
  • Eliminar: Borra un fichero o un directorio del proyecto.
  • Importar: Añade un nuevo proyecto al repositorio.
  • Exportar: Extrae un proyecto desde el repositorio, eliminando las carpetas “.svn”.
  • Navegador: Permite explorar directamente el repositorio y mover ficheros, eliminarlos, etc. Pero ojo, los cambios que hagáis no se podrán recuperar ni deshacer.

Nota IMPORTANTE, cuando importéis un proyecto, el TortoiseSVN no creará la carpeta padre, es decir si queremos subir un proyecto llamado X11 a: “svn://desarrollo/proyectos”, lo subirá al directorio proyectos, ensuciando la carpeta; en su lugar teníamos que haber puesto la siguiente url: “svn://desarrollo/proyectos/X11”. De todas formas tampoco os preocupéis porque gracias al navegador del TortoiseSVN podréis mover ficheros, crear carpetas, borrarlas, etc.

  1. Luis Franco says:

    Muy bueno el artículo. Como complemento señalar que desde la versión 1.4.2 de subversión se puede correr como un servicio de windows sin necesidad de un envoltorio como svnservice.
    instrucciones aquí:http://svn.collab.net/repos/svn/tags/1.4.0/notes/windows-service.txt

    Ejemplo:
    Para hacerlo, supongamos que hemos instalado subversion en c:svn y el repositorio en c:repositorio, y que queremos instalar un servicio que se llame svn142 y con descripción “Servidor svn 1.4.2”. Pues sólo tenemos que abrir una consola y teclear (todo en la misma línea y ojo, que después de binpath= y displayname= tiene que haber un espacio en blanco):
    sc create svn142 binpath= “c:svnbinsvnserve –service –root c:repositorio” displayname= “Servidor svn 1.4.2”
    Y listo. Por defecto se crea un servicio que arranca manualmente, pero el comando sc (id a microsoft, es proio de windows) permite añadir más opciones, como arranque automático, dependencias (por si necesitais que arranque apache antes que el servidor de subversión), modificar los parámetros, borrar los servicios, etc…
    Para modificar ese servicio que acabamos de crear y que dependa de apache, suponiendo que el servicio de apache se llama apache2 ponemos:
    sc config svn142 depend= apache2
    Para borrarlo, paramos el servicio y ejecutamos:
    sc delete svn142
    ¿Ventajas?. No necesitais un sprograma externo y podeis crear cuantos servicios necesiteis.

    Y no me aguanto sin dejar un par de sugerencias amistosas. Wunslow, me gusta tu blog pero la letra para escribir los comentarios es menos que reducida 😉 , y lo del captcha, tuve que escribir todo 3 veces antes de poder enviar el comentario. Siempre pensé que eran más un estorbo que una ayuda.
    Un saludo

  2. wunslov says:

    Hola Luis Franco,

    Da gusto leer un comentario con tanto nivel. Añadiré un enlace en el artículo hacia tu comentario artículo para que todo aquel que acceda a la página pueda leer tu comentario. 🙂

    Respecto a tus sugerencias, ya he aumentado el tamaño de la fuente, y respecto a lo del captcha, no es que sea de mi agrado pero es eficaz contra el spam. Este fin de semana buscaré otro captcha más sencillo de usar.

    Un saludo

  3. Syncromind says:

    Muy bueno el articulo!!! Una pregunta, es factible hacer backups full y diferenciales de la carpeta de repositorios, con un programa externo de backups, sin tener riesgo de consistencia al levantarlos?? O es obligatorio hacerlo desde el SVN?

    Mil gracias y perdon por la molestia!!

  4. Sorro says:

    Muy buen artículo. Quería agradecer el comentarío a Luis Franco y hacer una pequeña puntualización con el comando. Para los que les de un error, es por las comillas, pueden probar a poner la secuencia de escape, algo como esto:

    sc create svn binpath= “”c:archivos de programaSubversionbinsvnserve.exe” –service -rC:svncode” displayname= “Servidor de SubVersion” depend= Tcpip start= auto

    Un saludo a todos.

  5. Alberto says:

    Buenas tardes y disculpad mi ignorancia, soy nuevo en estos menesteres y me gustaría más información para crear el servidor. He seguido todos los pasos que se indican en este tutorial y hay dos cosas que me vuelven loco, la primera es que, después de haber creado el directorio del repositorio y haber ejecutado el comando para convertirlo, cuando cargo el servicio e intento iniciarlo, este me indica que no tiene nada que hacer (supongo que habrá que reinciar el equipo, como siempre con windows…) y lo segundo es una duda que puede resultar bastante absurda pero que ahí va… en el directorio del repositorio ¿donde coloco mis ficheros para que los colaboradores puedan acceder, se colocan en la raiz o hay que crear algún directorio adicional?

    Espero no haber aburrido con mis preguntas.

    Muchas gracias por vuestro tiempo.

  6. wunslov says:

    Hola Alberto,

    El tutorial ha quedado obsoleto, las últimas versiones se puede instalar como servicio sin necesidad de utilizar SVNService.

    Mira los comentarios., espero que te ayuden.

    Un saludo