Instalación de subversion

2
29192

Servidor Subversion para Windows y servidor Subversion
portable

 

Servidor
Subversion para Windows y servidor Subversion portable. 1

Resumen. 1

Introducción. 1

Objetivo. 2

Requisitos. 2

Carpeta de
repositorios. 2

Referencias
y manual de Subversion. 3

Instalación
del servidor Subversion SVNServer 3

Configuración
del SVN Server 5

Instalación
del servidor Apache HTTPD.. 6

Arrancando
el servidor HTTPD local 11

Configuración
del servidor HTTPD.. 13

Añadir
usuarios de Subversion al Servidor Subversion. 14

Crear la
versión portable del servidor Subversion con Apache. 15

Uso de la
versión portable. 17

Instalación
del cliente TortoiseSVN.. 17

Pruebas
desde un cliente SVN.. 20

Organización
del repositorio. 22

Conclusión. 23

 

Resumen

En este artículo vamos a instalar uno de los sistemas de control
de versiones más populares, el  servidor Subversion SVNServer para Windows, con
soporte para conexiones HTTP mediante un servidor Apache HTTPD y además
realizaremos una configuración portable del servidor.

Introducción

En nuestro trabajo diario y para cualquier tipo de
proyectos, trabajamos con documentos, archivos, imágenes, hojas de cálculo,
código fuente y todo tipo de ficheros informáticos, normalmente organizados en
carpetas en las que vamos guardando la información.

La mayor parte de las veces, quizás por falta de tiempo,
quizás por desconocimiento o quizás por un poquito de dejadez (seamos
sinceros), los tenemos todos ellos dispersos en grandes carpetas llenas de
documentos y ficheros, que muchas veces son borradas «accidentalmente» o
dejadas en el olvido.

Si además formamos parte de un grupo de trabajo u
organización, la proliferación de «unidades compartidas», que se convierten en
verdaderos maremágnum de ficheros, sin organización metodológica, duplicidad de
ficheros o gestión manual de las versiones de los mismos, con el agravante de
las copias locales no actualizadas, hacen que compartir la información deje de
ser un beneficio y se convierta en un problema.

 

Afortunadamente hoy día contamos con sistemas de control de
versiones e incluso gestores documentales que nos ayudan en este trabajo. Los
sistemas de control de versiones nos ayudan a crear almacenes de ficheros en
los que cada elemento viene identificado con una versión, de manera que se
centraliza y coordina la gestión de los mismos. Los sistemas de gestión
documental aportan además un gran número de funciones avanzadas de organización
y búsqueda de la información, pero estos sistemas, dada su complejidad, los
dejaremos para quizás otro artículo.

 

Las ventajas que nos aporta utilizar un sistema de control
de versiones son, por ejemplo:

  • Creación y mantenimiento centralizado de repositorios
  • Fácil creación y organización de las carpetas de ficheros
  • Control de las versiones de los ficheros
  • Creación de copias locales de todo o parte del
    repositorio, que nos permite trabajar de forma independiente en cada PC
    con la información del repositorio
  • Sistemas de sincronización y coordinación entre los
    diferentes miembros del grupo u organización, para que el trabajo de un
    usuario no perjudique (al menos sin avisar) al trabajo de otro usuario.
  • Fácil creación de copias de seguridad y recuperación de la
    información, incluso a una fecha dada.
  • Visualización del histórico de cambios en el repositorio,
    con identificación del usuario que realiza cada cambio.
  • Y la mejor, es un producto Open Source, maduro y estable,
    incluido dentro de los proyectos gestionados por la organización Apache.

 

En este artículo vamos a utilizar el servidor de control de
versiones Subversion Server, que es un software Open Source de la fundación
Apache. Este servidor tiene una forma de trabajar parecida a la del popular
CVS, aunque se han introducido gran cantidad de mejoras que facilitan su
utilización.

Objetivo

Nuestro objetivo  es instalar  un servidor Subversion,
accesible mediante el protocolo HTTP en nuestro PC local, de manera que lo
podamos llevar en un dispositivo de almacenamiento  móvil, es decir un servidor
«Portable», de manera que podamos ejecutarlo en cualquier PC nuestro. Así, el
servidor que vamos a instalar contendrá:

·        
Los binarios necesarios para ejecutar el
servidor Subversion por HTTPD

·        
El repositorio inicial donde se almacenará
la información que queremos guardar bajo un control de versiones.

Requisitos

Para la instalación del servidor Subversion portable sobre
Windows necesitamos tres componentes software: el servidor Subversion, el
servidor Apache HTTPD y un cliente de Subversion, como puede ser TortoiseSVN.
Los dos primeros los podemos obtener de la sección de descargas de la Apache Software Foundatiion (http://www.apache.org) y el
TortoiseSVN de http://tortoisesvn.tigris.org/

 

El software necesario es:

  • httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi. Servidor
    Apache HTTPD 2.2
  • Setup-Subversion-1.6.6.msi. Servidor SVN Server de Apache
    (antes Tigris)
  • TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi. Cliente de
    SVN para probar el sistema

 

Antes de comenzar quiero indicar que primero instalaremos el
servidor en local y luego lo haremos «Portable»

Carpeta de repositorios

Debemos crear una carpeta que almacenará el repositorio Subversion,
pon ejemplo c:\repositoriosvn. Daremos los permisos necesarios para que el
sistema y los administradores tengan control total sobre el repositorio.

Referencias y manual de Subversion

 

Al instalar SVN Server se instala un manual de Subversion en
el que viene un capítulo dedicado a la instalación de SVN Server y otro de SVN
sobre Apache 2.2. Está en la carpeta bin del Subversion Server como archivo
svn-book.chm. El capítulo 6 está dedicado a la configuración del servidor.

 

Además hay muy buena información en las páginas de
TortoiseSVN tanto de instalación del servidor como de manejo de Subversion a
través de TortoiseSVN.

Instalación del servidor Subversion SVNServer

Ejecutamos el programa de instalación

 

 

 

Pulsamos «Next»

 

 

Pulsamos «Next»

 

 

Pulsamos «Next»

 

 

Pulsamos «Instalar»

 

 

 

Pulsamos «Finish»

 

Configuración del SVN Server

 

Primero se debe crear la carpeta raíz para el repositorio e
inicializarla. Abrimos una ventana de línea de comandos en la carpeta de
instalación del servidor Subversion y ejecutamos:

C:\Archivos de programa\Subversion\bin>mkdir f:\Repositorio\RepositorioSVN
C:\Archivos de programa\Subversion\bin>svnadmin create f:\Repositorio\RepositorioSVN

Esto crea la carpeta RepositorioSVN y la inicializa.

 

Para que el servidor SVN  se ejecute automáticamente al
arrancar el servidor debe ser instalado como servicio. Esto se hace con el
comando de Windows SC:

C:\Archivos de programa\Subversion\bin>sc  create SVN
  binpath= "\"C:\Archivos de
  programa\Subversion\bin\svnserve.exe\"
--service -r c:\repositoriosvn"
  displayname= "Subversion Server" depend= "Tcpip" start=
  auto
[SC] CreateService CORRECTO


C:\Archivos de programa\Subversion\bin>net start svn
El servicio de Subversion Server está iniciándose.
El servicio de Subversion Server se ha iniciado con éxito.

C:\Archivos de programa\Subversion\bin>

Ojo con el uso de las comillas y el nombre svnserve.exe.

 

Os preguntareis si no configuramos nada del servidor Subversion.
Se podría hacer, pero como se va a realizar el acceso mediante un módulo de
Apache HTTPD, será en éste donde se configure todo.

Instalación del servidor Apache HTTPD

 

Ejecutar el programa de instalación httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi

 

 

Pulsamos «Next»

 

 

Aceptar y pulsamos «Next»

 

 

 

Pulsamos «Next»

 

 

Debemos escribir el dominio en el que estamos, por ejemplo
dominio.es, el nombre del servidor, por ejemplo Subversion.dominio.es, y el
correo del administrador, por ejemplo admin.@dominio.es.
Evidentemente lo puedes sustituir por lo que creas oportuno.

 

Por defecto se arrancará el servidor como un servicio
Windows accesible por todos los usuarios del sistema. Esto nos permitirá
probarlo. Como siempre, luego podremos quitarlo fácilmente.

 

Pulsamos «Next»

 

 

Elegimos la típica,  y siguiente

 

 

Pulsamos «Next»

 

Pulsamos «Install». El servidor HTTPD se instalará en
nuestro sistema.

 

Durante la instalación sale una ventana auxiliar

 

 

 

Se ignora y sale la pantalla principal de instalación

 

 

Finalizamos pulsando «Finish»

 

Arrancando el servidor HTTPD local

En la bandeja del sistema junto al reloj aparece ahora el
icono de configuración de Apache HTTPD, , que permite abrir el panel de
control del servidor Apache HTTPD

 

 

Antes de arrancar el Apache http hay que asegurarse de que
el puerto que se va a utilizar esté libre. Por ejemplo, de que no haya un
Tomcat ya arrancado…

 

 

Si el servidor no puede arrancar se debe consultar el visor
de eventos de Windows, en las Herramientas administrativas del Panel de Control
de Windows.

 

 

 

Una vez que el servidor está arrancado, se puede probar su
funcionamiento abriendo la dirección http://localhost
. Por defecto el servidor HTTPD se configura para arrancar en el puerto 80, que
es el estándar para un servidor Web basado en HTTP.

 

 

 

Configuración del servidor HTTPD

 

El servidor Apache HTTPD se configura mediante el archivo
httpd.conf que se encuentra en C:\Archivos de programa\Apache Software
Foundation\Apache2.2\conf. En este archivo hay que realizar los siguientes
cambios:

  • Configurar el puerto de escucha de Apache HTTPD al puerto
    8090 (o cualquiera que estimemos oportuno)
    • Listen 8090
  • Descomentar (para habilitar) los módulos
    • LoadModule dav_module modules/mod_dav.so
    • LoadModule dav_fs_module
      modules/mod_dav_fs.so
  • Al final de los módulos hay que añadir los módulos de
    WebDav de Subversion Server
    • #LoadModule version_module
      modules/mod_version.so
    • #LoadModule vhost_alias_module modules/mod_vhost_alias.so
    • #moculos para Subversion
    •     LoadModule  dav_svn_module        
      modules/mod_dav_svn.so
    •     LoadModule  authz_svn_module      
      modules/mod_authz_svn.so
  • Justo debajo insertar la carpeta virtual para el
    repositorio subversion.
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#modulos para Subversion
    LoadModule  dav_svn_module         modules/mod_dav_svn.so
    LoadModule  authz_svn_module      
  modules/mod_authz_svn.so

# For Subversion repository

# For Subversion repository
<Location /svn>
    DAV svn
    SVNListParentPath on
    SVNPath /svn_repository
    AuthType Basic
    AuthName "Proyectos y documentos"
    AuthUserFile /Subversion/Apache2.2/passwd
    Require valid-user
</Location>
  • Copiar las bibliotecas dinámicas mod_dav_svn.so y
    mod_authz_svn.so desde la carpeta bin de Subversion a la carpeta modules
    de Apache HTTPD
  • Importante: REINICIAR EL EQUIPO. Parece ser
    (por lo leído en artículos) que no vale solo con re arrancar el servidor
    de apache, sino que hay que reiniciar completamente el equipo para que
    coja estas dlls el servidor Apache….
  • Para probar si está funcionando correctamente basta abrir
    con el navegador la página http://localhost:8000/repositoriosvn
  • Tal y como se ha configurado, el servidor Apache
    solicitará usuario y contraseña para ese repositorio

 

 

Añadir usuarios de Subversion al Servidor
Subversion

 

Para crear el fichero de contraseñas del servidor Apache
HTTPD hay que usar el comando

 

  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>bin\htpasswd -c passwd usuario
  Automatically using MD5 format.
  New password: *******
  Re-type new password: *******
  Adding password for user usuario
  
  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>type passwd
  usuario:$apr1$po9TdgCG$6W9wyELPGBqVMFqJ3zfpK0
  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>

 

Con este comando hemos creado el fichero de contraseñas y
además hemos añadido un usuario. Después de añadir contraseñas hay que
reiniciar el servidor HTTPD para que coja los cambios.

 

Se accede al repositorio con este usuario para probar si
funciona

 

 

 

Para añadir más usuarios se puede utilizar el comando con la
opción –b, que especifica la contraseña en la propia línea de comandos:

 

  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>bin\htpasswd -b passwd cgonzalez nuevapw
  Automatically using MD5 format.
  Adding password for user cgonzalez
  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>type passwd
  usuario:$apr1$po9TdgCG$6W9wyELPGBqVMFqJ3zfpK0
  cgonzalez:$apr1$05x0vS9W$UQqDJpQaldojyIG1EmBN//
  C:\Archivos de programa\Apache Software
  Foundation\Apache2.2>

 

Con el mismo comando se puede actualizar la contraseña. Para
facilitar la administración de los usuarios se ha creado un fichero de carga de
usuarios en la carpeta de Apache HTTPD /cargarysyaruis,bat) que actualiza los
usuarios que tiene líneas del tipo

  crearusuarios.bat
  
  bin\htpasswd -b passwd jlayunta usuario
  bin\htpasswd -b passwd cgonzalez nuevapw

 

Cada vez que se ejecuta este script hay que luego rearrancar
el Apache HTTPD

 

Crear la versión portable del servidor Subversion
con Apache

 

Una vez instalado el servidor Subversion y el servidor
Apache HTTPD, generar una versión portable del mismo es sencillo:

 

  1. Copiamos la carpeta completa del servidor Apache dentro de
    la carpeta de Subversion
  2. Creamos un archivo svnstart.bat que arranca el servidor Subversion
    y el apache. . Un ejemplo sería:

 

  

C:\Subversion\svnstart.bat

cd start "Subversion Server" /MIN bin\svnserve.exe -d -r /svn_repository cd Apache2.2 cd bin start "Apache 2.2 for Subversion" /MIN httpd.exe -d /Subversion/Apache2.2 -f /Subversion/Apache2.2/conf/httpd.conf   rem usuar usuario: usuario, contraseña: usuario start http://localhost:8090/svn

 

  1. Modificamos el archivo de configuración de Apache HTTPD,
    httpd.conf. Hay varias cosas que modificar:
    1. Las rutas de los repositorios y ficheros en las etiqueta
      Location
    2. Modificar convenientemente el valor de la ruta DocumentRoot «C:/Subversion/Apache2.2/htdocs»
    3. Dado que <Directory /> está configurado para que no
      tenga acceso nadie, asegurarse de que existe una etiqueta
      <Directory> que permite acceso a la raíz de htdocs,  por ejemplo;

 

  C;\Subversion\Apache2.2\conf\httpd.conf

  ...
  DocumentRoot
  "C:/Subversion/Apache2.2/htdocs"
   
  #
  # Each directory to which Apache has
  access can be configured with respect
  # to which services and features are
  allowed and/or disabled in that
  # directory (and its subdirectories). 
  #
  # First, we configure the
  "default" to be a very restrictive set of 
  # features.  
  #
  <Directory />
      Options FollowSymLinks
      AllowOverride None
      Order deny,allow
      Deny from all
  </Directory>
   
  #
  # Note that from this point forward you
  must specifically allow
  # particular features to be enabled - so
  if something's not working as
  # you might expect, make sure that you
  have specifically enabled it
  # below.
  #
   
  #
  # This should be changed to whatever you
  set DocumentRoot to.
  #
  <Directory "C:/Subversion/Apache2.2/htdocs">
      #
      # Possible values for the Options
  directive are "None", "All",
      # or any combination of:
      #   Indexes Includes FollowSymLinks
  SymLinksifOwnerMatch ExecCGI MultiViews
      #
      # Note that "MultiViews"
  must be named *explicitly* --- "Options All"
      # doesn't give it to you.
      #
      # The Options directive is both
  complicated and important.  Please see
      #
  http://httpd.apache.org/docs/2.2/mod/core.html#options
      # for more information.
      #
      Options Indexes FollowSymLinks
   
      #
      # AllowOverride controls what
  directives may be placed in .htaccess files.
      # It can be "All",
  "None", or any combination of the keywords:
      #   Options FileInfo AuthConfig Limit
      #
      AllowOverride None
   
      #
      # Controls who can get stuff from
  this server.
      #
      Order allow,deny
      Allow from all
   </Directory>
  

Uso de la versión portable

Para usar la versión portable simplemente debemos hacer
doble clic en el svnstart.bat para levantar el servidor Subversion. Es muy
rápido.  Dejo como ejercicio probar si se pueden eliminar las letras de las
rutas para que todo el servidor sea realmente portable, de manera que lo pueda
instalar en un disco externo, por ejemplo, y llevar el servidor y el
repositorio con vosotros a todas partes.  De esta manera podríamos tener un
mecanismo muy rápido para sincronizar carpetas entre casa y la oficina, Además
la copia de seguridad del repositorio es tan simple como copiar la carpeta
svn_repository a un lugar seguro, o hacer un zip de ella y guardarlo cada pocos
días.

Instalación del cliente TortoiseSVN

Instalar TortoiseSVN ejecutando TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi

 

 

 

Pulsamos «Next»

 

Acepto y pulsar «Next»

 

 

Pulsamos «Next»

 

 

Pulsamos «Next»

 

 

Pulsar «Finish»

 

 

Puede ser necesario cerrarla sesión pues se modifica el
Explorer. Puede bastar matar el proceso Explorer.exe y volver a ejecutar el
Explorer desde el Administrador de tareas…

 

Nota: se puede instalar el paquete de idioma en español para
el TortoiseSVN. Yo no lo hago pues así luego puedo buscar en Google temas
avanzados, pero se puede hacer sin problemas. Si así queréis.

Pruebas desde un cliente SVN

 

Para manejar el repositorio se
debe crear una copia local del mismo o de la parte del repositorio que se
quiera modificar. Para ello se crea una carpeta, por ejemplo Mis
documentos\svn_repo y hacemos un checkuut del repositorio sobre ella:

 

 

 

Con el botón secundario del ratón
elegimos la opción «SVN checkout»

 

 

Escribimos
la URL del servidor Subversion pulsamos OK

 

 

Se solicita el usuario necesario

 

 

Pulsar
OK La carpeta ahora muestra en el explorador de Windows el símbolo de SVN

 

 

Dentro
de la carpeta c:\svn_repo tendremos la carpeta oculta .svn, que inicialmente
tiene un tamaño de menos de 1kB.

 

Organización del repositorio

 

Subversion utiliza un sistema de carpetas para organizar los
ficheros almacenados bajo el control de versiones, por debajo de la carpeta raíz
del repositorio.

Suele ser habitual organizar un repositorio Subversion con
la siguiente estructura:

 

  • thrunk
  • branches
  • tags

 

En la carpeta thrunk se crean los
provectos en su rama principal. Luego las diferentes ramas y versiones
etiquetadas se crean en las carpetas branches y tags, respectivamente, también
organizadas por proyectos

 

Otra organización alternativa
sería:

 

  • proyecto1
    • thrunk
    • branches
    • tags
  • proyecto1
    • thrunk
    • branches
    • tags
  • proyecto1
    • thrunk
    • branches
    • tags
  • proyecto1
    • thrunk
    • branches
    • tags

 

 

Realmente Subversion no impone
una estructura, pues trata a proyectos, ramas y etiquetas como carpetas. Todo
esto lo discutiremos más a fondo en el artículo siguiente que publicaremos,
dedicado a evaluar el rendimiento de un repositorio Subversion. Además
aprenderemos a crear múltiples repositorios dentro de un mismo servidor, configurando
de manera independiente el acceso a los mismos.

 

Conclusión

 

Como podéis ver, ya no tenemos ninguna excusa para instalar
y utilizar un servidor Subversion para nuestro trabajo diario, bien en nuestra
organización, bien como repositorio personal de información. Además el coste
del producto evaluado es nulo, ya que la licencia utilizada lo permite usar
libremente en nuestras empresas y organizaciones. Es más, es un producto
ampliamente utilizado en grandes empresas de desarrollo de software.

Si queréis ahondar más en cómo maneja Subversion
internamente el repositorio os invito a leer el siguiente artículo que
publicaré sobre rendimiento de un repositorio Subversion, en el que se
aclararán muchas dudas de su funcionamiento.

Cristóbal González Almirón
Consultor de desarrollo de proyectos informáticos. Su experiencia profesional se ha desarrollado en empresas como Compaq, HP, Mapfre, Endesa, Repsol, Universidad Autónoma de Madrid, en las áreas de Desarrollo de Software (Orientado a Objetos), tecnologías de Internet, Técnica de Sistemas de alta disponibilidad y formación a usuarios.

2 COMENTARIOS

  1. Muy buena guia, pero tengo un problema al intentar ejecutar con el comando net start svn.

    Podrias indicarme que estoy haciendo mal, me da el siguiente error.

    C:\Subversion\bin>net start svn
    El servicio no está respondiendo a la función de control.

    Puede obtener más ayuda con el comando NET HELPMSG 2186.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad