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.
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
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.
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
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.
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
![]() |
|
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.
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>
Para importar o hacer commit de archivos en su repositorio Subversion a través de HTTP, el repositorio debe ser propiedad del usuario HTTP. En los sistemas Ubuntu, el usuario HTTP normalmente es www-data. Para cambiar el propietario de los archivos del repositorio, introduzca el siguiente comando en una terminal:
sudo chown -R www-data:www-data /ruta/al/repositorio
![]() |
|
Al cambiar el propietario del repositorio a www-data no podrá importar o hacer commit de ningún archivo en el repositorio ejecutando el comando svn import file:/// con ningún otro usuario que no sea www-data. |
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:
sudo htpasswd -c /etc/subversion/passwd nombre_usuario
É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
![]() |
|
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. |
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.
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
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
![]() |
|
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.