Subversion

Subversion es un sistema de control de versiones open source. Mediante Subversion, puede registrar la historia de archivos de código fuente y documentos. Gestiona archivos y directorios a través del tiempo. Se coloca un árbol de archivos en un repositorio central. El repositorio es como un servidor de archivos ordinario, excepto en que recuerda todos los cambios que se realizan sobre los archivos y los directorios que contiene.

Instalación

Para acceder a un repositorio de Subversion mediante el protocolo HTTP, debe instalar y configurar un servidor web. Apache2 ha demostrado funcionar bien con Subversion (para instalar y configurar Apache2, consulte la sub-sección HTTP de la sección de Apache2). Para acceder al repositorio de Subversion repository mediante el protocolo HTTPS, debe instalar y configurar un certificado digital en su servidor web Apache 2 (para ello, consulte la sub-sección HTTPS de la sección de Apache2).

Para instalar Subversion, ejecute la siguiente orden en la línea de órdenes de una terminal:

sudo apt-get install subversion libapache2-svn

Configuración del servidor

Este paso asume que ya tiene instalados los paquetes mencionados en su sistema. Esta sección le explica cómo crear un repositorio de Subversion y acceder al proyecto.

Crear un repositorio de Subversion

El repositorio de Subversion puede ser creado usando la siguiente orden en la línea de órdenes de una terminal

svnadmin create /path/to/repos/project

Métodos de acceso

Se puede acceder («check out») a los repositorios de Subversion a través de muchos métodos diferentes --en un disco local, o a través de varios protocolos de red. Una ubicación dentro del repositorio, sin embargo, es siempre una URL. La tabla describe cómo se corresponden diferentes esquemas de URL con los métodos de acceso disponibles.

Tabla 13.1. Métodos de acceso

Esquema

Método de acceso

file://

acceso directo al repositorio (en disco local)

http://

Acceso a través del protocolo WebDAV a un servidor web Apache2 con Subversion incluido

https://

Igual que http://, pero con cifrado SSL

svn://

Acceso al servidor svnserve mediante el protocolo predeterminado

svn+ssh://

Igual que svn://, pero a través de un túnel SSH


En esta sección, veremos cómo configurar Subversion para todos esos métodos de acceso. Aquí cubrimos lo básico. Para más detalles avanzados sobre su utilización, consulte el libro de svn.

Acceso directo al repositorio (file://)

Este es el método de acceso más sencillo. No necesita que se esté ejecutando ningún proceso de servidor Subversion. Este método de acceso se usa para acceder a Subversion desde la misma máquina. La sintaxis de la orden, introducida en la línea de órdenes de una terminal, es la siguiente:

svn co file:///path/to/repos/project

o

svn co file://localhost/path/to/repos/project

[Nota]

Si no especifica el nombre del host, ha de usar tres barras (///) -- dos para el protocolo (file, en este caso) más la barra que indica la raíz de la ruta. Si especifica el nombre del host, debe usar dos barras (//).

Los permisos del repositorio dependen de los permisos del sistema de archivos. Si el usuario tiene permisos de lectura/escritura, puede hacer «checkout» y «commit» sobre el repositorio.

Acceso mediante el protocolo WebDAV (http://)

Para acceder al repositorio de Subversion a través del protocolo WebDAV, debe configurar su servidor web Apache2. Debe añadir lo siguiente en su archivo /etc/apache2/apache2.conf:

 <Location /svn>
  DAV svn
  SVNPath /path/to/repos
  AuthType Basic
  AuthName "El nombre de su repositorio"
  AuthUserFile /etc/subversion/passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
  Require valid-user
  </LimitExcept>
  </Location> 

Ahora, debe crear el archivo /etc/subversion/passwd, que contiene los detalles de autenticación del usuario. Para añadir una entrada, p.e. para añadir un usuario, puede ejecutar esta orden en una terminal:

htpasswd2 /etc/subversion/passwd user_name

Ésta orden le pedirá que introduzca su contraseña. Cuando lo haga, se añadirá el usuario. Entonces, para acceder al repositorio puede ejecutar esto:

            
              svn co http://servername/svn
            
          
[Aviso]

La contraseña se transmite como texto plano. Si le preocupa que puedan interceptar su contraseña, se le recomienda que use cifrado SSL. Para más detalles, consulte la siguiente sección.

Acceso mediante el protocolo WebDAV con cifrado SSL (https://)

El acceso a un repositorio de Subversion por medio del protocolo WebDAV con cifrado SSL (https://) es similar al http:// excepto en que debe instalar y configurar el certificado digital en su servidor web Apache2.

Puede instalar un certificado digital emitido por una autoridad de certificación como Verisign. También puede instalar su propio certificado auto-firmado.

Este paso asume que tiene instalado y configurado un certificado digital en su servidor web Apache2. Ahora, para acceder al repositorio de Subversion, por favor, consulte la sección anterior. Los métodos de acceso son exactamente los mismos, excepto el protocolo. Debe usar https:// para acceder al repositorio de Subversion.

Acceso mediante un protocolo personalizado (svn://)

Cuando se haya creado el repositorio de Subversion, podrá configurar el control de acceso. Puede editar el archivo /ruta/al/repositorio/proyecto/conf/svnserve.conf para configurar el control de acceso. Por ejemplo, para configurar la autenticación, puede descomentar las siguientes líneas en el archivo de configuración:

# [general]
# password-db = passwd

Tras descomentar las líneas anteriores, podrá mantener la lista de usuarios en el archivo passwd. Para ello, edite el archivo passwd en el mismo directorio y añada el nuevo usuario. La sintaxis es la siguiente:

username = password

Para más detalles, por favor consulte el archivo.

Ahora, para acceder a Subversion a través del protocolo personalizado svn://, bien sea desde la misma máquina o desde otra diferente, debe ejecutar svnserver usando la orden svnserve. La sintaxis es la siguiente:

$ svnserve -d --foreground -r /ruta/al/repositorio
# -d -- modo demonio
# --foreground -- ejecutar en primer plano (útil para depuración)
# -r -- raíz del directorio a servir

Para más detalles de uso, por favor, consulte:
$ svnserve --help

Una vez haya ejecutado la orden, Subversion comenzará a escuchar por el puerto predeterminado (3690). Para acceder al repositorio del proyecto, deberá ejecutar la siguiente orden en la línea de órdenes de una terminal:

svn co svn://hostname/project project --username user_name

En función de la configuración del servidor, se le solicitará una contraseña. Cuando se haya autenticado, se recuperará («check out») el código desde el repositorio de Subversion. Para sincronizar el repositorio del proyecto con la copia local, puede ejecutar la sub-orden update. La sintaxis de la orden, introducida en la línea de órdenes, es la siguiente:

cd project_dir ; svn update

Para más detalles sobre cómo usar cada sub-orden de Subversion, puede consultar el manual. Por ejemplo, para aprender más sobre la orden co (checkout), ejecute la siguiente orden en la línea de órdenes de una terminal:

            
              svn co help
            
          

Acceso mediante un protocolo personalizado con cifrado SSL (svn+ssh://)

El proceso de configurar un servidor es el mismo que con el método svn://. Para más detalles, por favor, consulte la sección anterior. Este paso asume que ha seguido los pasos anteriores y que ha iniciado el servidor de Subversion usando la orden svnserve.

También asume que se está ejecutando el servidor ssh en esa máquina y que se permiten las conexiones entrantes. Para confirmarlo, por favor, intente iniciar una sesión en esa máquina usando ssh. Si puede entrar, todo está correcto. Si no puede entrar, por favor, corríjalo antes de continuar.

El procotolo svn+ssh:// se utiliza para acceder al repositorio de Subversion usando el cifrado SSL. Los datos transferidos se cifran usando este método. Para acceder al repositorio del proyecto (por ejemplo, con un «checkout») debe usar la siguiente sintaxis:

svn co svn+ssh://hostname/var/svn/repos/project

[Nota]

Debe usar la ruta completa (/ruta/al/repositorio/del/proyecto) para acceder al repositorio de Subversion usando este método de acceso.

En función de la configuración del servidor, se le solicitará una contraseña. Debe introducir la misma contraseña que usa para iniciar sesión con ssh. Cuando se haya autenticado, se recuperará («check out») el código del repositorio de Subversion.