CONTROL DE VERSIONES CON SUBVERSION
Juan Luis Serradilla Amarilla
Programador
ATICA
MNCS
ATICA. Campus de Espinardo. 30100 Murcia
<juanlu@um.es>
| Historial de revisiones |
| Revisión 1.0 |
15/06/2004 |
juanlu |
|
Documento inicial
|
| Revisión 1.1 |
23/08/2004 |
juanlu |
|
Apéndices sobre instalación
|
| Revisión 1.2 |
22/12/2004 |
juanlu |
|
Servidor SVN de MNCS (mncs.atica.um.es)
|
| Revisión 1.3 |
21/06/2005 |
juanlu |
|
Versión 1.2 de Subversion con opción de bloqueos
|
Resumen
Uso de SubVersion para el control de versiones
SubVersion (en adelante SVN) es una herramienta para el control de versiones de ficheros electrónicos, como pueden ser los que integran el software o la documentación. Además es un proyecto de software libre (Open Source) consolidado, con una linea de desarrollo muy activa; y cuyo código fuente está disponible. SVN está construido sobre la librería APR (Apache Portable Runtime), de modo que puede instalarse en cualquier sistema operativo donde pueda ejecutarse el servidor web Apache (como son Windows y Linux).
SVN se basa en un repositorio central que actúa como un servidor de ficheros, con la capacidad de recordar todos los cambios que se hacen tanto en sus directorios como en sus ficheros. De esta forma, aunque SVN nos mostrará la última versión, permite recuperar viejas versiones y examinar el historial de cambios.
SVN se puede utilizar para gestionar el versionado de cualquier tipo de fichero, no sólo software. De hecho SVN sólo se encarga del control de versiones, y no de la gestión de la configuración del software.
¿Cómo resuelve SVN el problema de la compartición de ficheros? SVN no usa el modelo bloquear-modificar-desbloquear; sino el modelo copiar-modificar-fundir. ¿Qué significa ésto? Pues que SVN no bloquea un fichero mientras lo estamos modificando. Esto, que inicialmente puede parecer una carencia, realmente no lo es, todo lo contrario, mejora la productividad al tener los ficheros siempre accesibles. Además, en el caso de que dos usuarios accedan al mismo fichero y lo modifiquen, el primero que lo actualice no tendrá problemas para dejarlo en el repositorio; pero el segundo ya no podrá hacerlo, y SVN le avisará de que hay un conflicto y el fichero ha sido modificado, dándole la opción de revisar las tres versiones (la original, la suya y la del otro) y resolver el conflicto.
SVN tiene una arquitectura cliente/servidor. El repositorio reside en el servidor, y los usuarios acceden a él haciendo uso de un cliente. Para Windows existe un cliente muy bueno, llamado TortoiseSVN, que además es software libre. Hay dos clientes más, ambos de código abierto: RapidSVN (para Linux y Windows) y JSVN (hecho en Java, y por tanto, multiplataforma).
Recomendamos el uso del cliente TortoiseSVN, cuyo manejo es fácil e intuitivo. De hecho se integra con el explorador de Windows; de modo que no hay que trabajar con otra herramienta más. TortoiseSVN no es más que otra opción del menú del explorador. Además, incorpora una serie de iconos que permiten visualizar si un fichero o directorio pertenece al sistema de control de versiones, y en tal caso, conocer su estado.
SVN tiene una ventaja más, y es que se puede acceder vía web, haciendo muy fáciles las consultas; e incluso se podría actualizar vía web, usando webdav y activando el autoversionado.
2. Creación de un repositorio.
¿Qué necesitamos para empezar a trabajar con SVN? En primer lugar un servidor, como es el caso de mncs.atica.um.es, donde instalar SVN y poder crear los repositorios necesarios (ver Apéndice A, Instalación del servidor SVN para instalación de la parte servidor).
¿Cómo creamos un repositorio? En el servidor donde tengamos instalado SVN, usaremos el comando svnadmin:
$ svnadmin create /SVN/MNCS
De esta forma creamos un repositorio vacío para la MNCS. El repositorio no es accesible directamente, es necesario usar un cliente SVN.
¿Cómo cargamos el repositorio con nuestro software o nuestra documentación? La carga inicial la haremos utilizando el cliente, con la opción import:
$ svn import /home/juanlu/novell/MNCS file:///SVN/MNCS -m "MNCS. Carga inicial."
En el ejemplo hemos cargado lo que tiene la MNCS en Novell (en la G), en el repositorio SVN de la propia MNCS. En este caso hemos utilizado una URL de tipo "file" porque estamos conectados al propio servidor donde está el repositorio, y lo tenemos accesible. También podíamos haber usado una URL del tipo "http", pero es más lento.
El repositorio SVN para la MNCS está en https://mncs.atica.um.es/svn/MNCS/.
3. Interacción con el Repositorio usando el cliente TortoiseSVN.
¿Cómo empieza a trabajar un usuario con un repositorio SVN? En primer lugar hay que instalar el cliente SVN, por ejemplo TortoiseSVN (ver Apéndice D, Instalación del cliente TortoiseSVN). Una vez instalado, crearemos un directorio de trabajo (working directory), en el que cargaremos aquella rama (directorio) del repositorio que contiene el fichero o ficheros que queremos modificar.
Voy a explicar todo el proceso poniendo ejemplos, primero con el cliente SVN en línea de comando (Linux), y luego con el cliente TortoiseSVN (Windows).
Para acceder al repositorio y descargar un directorio, haremos un "checkout" (obtener). Esta operación convierte un directorio en un "directorio de trabajo". Básicamente carga la rama del repositorio indicada y en cada subdirectorio incluye un directorio oculto, con el nombre ".svn", donde guarda la información de sincronización con el repositorio:
$ svn checkout https://mncs.atica.um.es/svn/MNCS/proyectos/ControlVersiones /home/juanlu/svn/ControlVersiones
En el ejemplo anterior vemos la carga inicial del directorio de trabajo, con el cliente SVN desde la línea de comando. Veamos cómo hacerlo con el cliente TortoiseSVN:
Una vez que tenemos en local aquella parte del repositorio con la que queremos trabajar, si queremos modificar un archivo, usaremos nuestro editor favorito. De igual modo, si queremos añadir un archivo, también usaremos nuestro editor preferido (FormsBuilder, XMLMind, Kawa, etc).
Desde la versión 1.2 de Subversion, se pueden bloquear ficheros; de modo que si dispones de un servidor 1.2 o superior, y te has instalado un cliente que implemente la funcionalidad; puedes bloquear el fichero (o ficheros) que vayas a modificar, antes de iniciar los cambios. Lo puedes hacer, seleccionando el fichero a bloquear, con la opción "Obtener bloqueo" (o desde la línea de comando con "svn lock").
Si hemos creado un archivo nuevo, antes de enviar los cambios, debemos incluirlo en el sistema de control de versiones, con "add" (añadir):
$ svn add /home/juanlu/svn/ControlVersiones/documentacion/svnAdd.bmp
Incluir un fichero nuevo en el control de versiones, con TortoiseSVN es muy fácil:
Una vez que hemos añadido el nuevo fichero, o hemos modificado el archivo deseado, tenemos que enviar los cambios al repositorio, con "commit" (confirmar). No olvidemos indicar un comentario explicativo de los cambios que hemos hecho:
$ svn commit -m "MNCS. ControlVersiones. Guia Rápida SVN. Imágenes."
Con TortoiseSVN, como siempre, esta operación es muy sencilla:
Dentro de las operaciones básicas, nos queda saber cómo actualizar nuestro directorio de trabajo con los cambios que hagan nuestros compañeros en el repositorio, con "update" (actualizar):
$ svn update
Si al hacer "update" (actualizar) de nuestro directorio de trabajo, encontramos conflictos con algún fichero, nos indicará que alguien ha subido al repositorio cambios antes que nosotros, que afectan a ficheros que estamos modificando. En tal caso, aparecerán en nuestro directorio de trabajo dos ficheros nuevos, con extensiones que indican a qué revisión corresponden; por ejemplo, r16 y r17, donde r16 es la revisión sobre la que inicié los cambios que todavía no he subido, y r17 es la revisión como consecuencia de los cambios que han subido al repositorio antes que nosotros.
En esta situación, editaremos nuestro fichero y le aplicaremos los cambios oportunos para reflejar la actualización que se nos ha adelantado (para ello seguramente necesitaremos contactar con la persona que hizo dichos cambios). Una vez que nuestro fichero incluye dichos cambios (además de los nuestros), resolveremos el conflicto:
$ svn resolved /ruta/fichero_en_conflicto
También nos podemos encontrar con un conflicto al intentar hacer un "commit" (validar) de nuestros cambios; en el caso de que otro usuario haya subido sus cambios (sobre el mismo fichero que estamos modificando) al repositorio antes que nosotros. En tal caso, tendremos que hacer un "update" (actualizar), para bajarnos la nueva revisión del fichero, y proceder como en el caso anteriormente expuesto.
Por supuesto, con el cliente gráfico para Win32 (TortoiseSVN), también tenemos el comando "resolved" (resolver conflicto), una vez que ya hemos mezclado nuestros cambios con los del usuario que se nos adelantó.
A. Instalación del servidor SVN
El servidor SVN (así como el cliente), están disponibles en http://subversion.tigris.org/, bajo el enlace "Downloads". Encontraremos tanto el código fuente, como los binarios para diversas distribuciones de Linux (RedHat, Debian, Mandrake, SuSe, etc), Windows (Win32), Solaris y Mac.
Al escribir estas líneas, el servidor de pruebas (mncs.atica.um.es) tiene Subversion 1.2 sobre Fedora Core 2. Ya con Fedora Core 3 viene Subversion 1.1; y la migración/instalación es tan sencilla como descargar dos rpms (para el caso de un servidor con Apache):
Los rpms para Fedora se pueden descargar desde http://dag.wieers.com/packages/subversion/.
La instalación es tan sencilla como hacer:
# rpm -Uhv *.rpm
Para Mandrake 9.2 están disponibles los binarios i586 en http://mirror.brain.org/linux/breser/mandrake/i586/9.2/RPMS/. Veremos que hay muchos rpms, porque están disponibles todas las versiones de SVN que han salido hasta ahora; además de las librerías adicionales (Apache, Python, etc) que necesita SVN.
¿Necesito Apache2 para montar un servidor SVN? No necesariamente. SVN incluye un servidor propietario (svnserve), cuyas comunicaciones pueden encriptarse fácilmente con un túnel SSH. Además, SVN dispone del módulo mod_dav_svn que permite a un servidor Apache acceder a un repositorio SVN usando el protocolo WebDAV/DeltaV (extensión del protocolo HTTP). Por tanto, si queremos acceder al repositorio vía HTTP, necesitaremos un servidor Apache2. De igual modo, si queremos establecer un control de acceso "fino" (por directorios dentro del repositorio), tendremos que instalar un servidor Apache2; ya que con svnserve, a cada usuario definido le damos acceso de lectura o escritura a todo el repositorio.
El proceso de instalación del servidor SVN sobre Linux es simple, pero puede hacerse laborioso, en función de las dependencias entre paquetes nuevos y ya instalados. ¿Qué pasos debo seguir?
-
Crear un usuario, por ejemplo svn; y habilitar un directorio en nuestro servidor para copiar los binarios (rpms) correspondientes a la versión de SVN a instalar.
Ejemplo A.1. SVN1.0.6 en pacom.atica.um.es
En pacom.atica.um.es, bajo el usuario svn, en el directorio /home/svn/svn105 están los rpms para montar SVN1.0.5; y en /home/svn/svn106 están los rpms para actualizar a la versión 1.0.6.
-
Importar la clave de autenticación de paquetes en nuestra base de datos RPM (desde el root). Para Mandrake 9.2 está disponible en http://mirror.brain.org/linux/breser/mandrake/i586/9.2/base/pubkey:
# rpm --import pubkey
-
Una vez que tenemos los rpms necesarios, podemos identificar los propios de SVN porque empiezan por "subversion"; pero casi seguro que al menos necesitaremos los que contienen el código de la versión en el nombre.
Ejemplo A.2. SVN1.0.6 en pacom.atica.um.es
[svn@pacom /home/svn/svn106]$ ls *1.0.6*<br/>
<br/>
apache2-mod_authz_svn-2.0.48_1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
apache2-mod_dav_svn-2.0.48_1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsubversion1_0-devel-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsubversion1_0-static-devel-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_client1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_delta1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_diff1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_ra_dav1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_ra_local1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_ra_svn1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_repos1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
libsvn_subr1_0-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
perl-SVN-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
perl-SVN-devel-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
python-svn-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
python-svn-devel-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
python-svn-static-devel-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-client-tools-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-doc-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-repos-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-repo-tools-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
<br/>
<br/>
[svn@pacom /home/svn/svn106]$ ls subversion*<br/>
<br/>
subversion-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-client-tools-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-doc-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-repos-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
subversion-repo-tools-1.0.6-0.92.1mdk.i586.rpm<br/>
<br/>
Podemos comprobar si tenemos que instalar otros paquetes, o si tendremos conflictos con paquetes ya instalados, simulando la instalación con la opción "--test" del comando rpm:
# rpm -ihv --test subversion*.rpm
La instalación de paquetes puede ser muy simple, si no hay conflictos, o hacerse bastante laboriosa en caso contrario.
Una vez instalado el servidor SVN, procederemos a configurarlo, bien con el servidor nativo de SVN (svnserve, apéndice B) o con Apache2 (apéndice C).
B. Configuración de svnserve
Una vez que hemos creado un repositorio, si queremos utilizar el servidor nativo de SVN, debemos configurar el fichero svnserve.conf, en el directorio conf dentro del path del repositorio.
Por ejemplo, podemos permitir el acceso anónimo para leer, y controlar el acceso para escribir, permitiéndoselo sólo a usuarios autorizados:
Ejemplo B.1. svnserve.conf
[general]<br/>
<br/>
anon-access = read<br/>
<br/>
auth-access = write<br/>
<br/>
password-db = passwd<br/>
<br/>
realm = MNCS
En el ejemplo anterior, el parámetro password-db indica el nombre del fichero que contiene los usuarios:
Ejemplo B.2. fichero de usuarios
[users]<br/>
<br/>
juanlu = juanlu<br/>
<br/>
pacom = pacom
Una vez configurado el servidor svnserve, si lo arrancamos se quedará escuchando en el puerto 3690:
Ejemplo B.3. Arrancar svnserve
$ svnserve -d -r /home/juanlu/SVN<br/>
<br/>
<br/>
<br/>
Nota: la opción "-r /home/juanlu/SVN" es para restringir el acceso<br/>
<br/>
en el servidor sólo al directorio que contiene los repositorios.
¿Cómo accedemos a un repositorio disponible a través de svnserve? Indicando una URL del tipo "svn:":
Ejemplo B.4. Acceso al repositorio vía svnserve
$ svn list svn://juanlu.atica.um.es/MNCS<br/>
<br/>
¿Puedo acceder de forma segura a un repositorio, usando el servidor svnserve? Sí, con un túnel ssh. De esta forma no necesito arrancar el proceso svnserve en el servidor, pero cada usuario con acceso ssh debe existir en la máquina que hace de servidor. De esta forma, al acceder al repositorio con ssh, se efectúa una conexión ssh al servidor como el usuario indicado en el cliente; y se arranca un proceso svnserve privado para esa sesión ssh.
Ejemplo B.5. Acceso al repositorio vía svnserve con ssh
$ whoami<br/>
<br/>
juanlu<br/>
<br/>
<br/>
<br/>
$ svn list svn+ssh://155.54.66.73/home/juanlu/SVN/MNCS<br/>
<br/>
<br/>
<br/>
Hace una conexión ssh como el usuario juanlu y arranca un servidor privado (svnserve), accediendo<br/>
<br/>
a este último por el túnel ssh establecido.<br/>
<br/>
C. Configuración de Apache2
La configuración de Apache suele ser bastante sencilla, modificando el fichero httpd.conf (o httpd2.conf) que normalmente se encuentra en el directorio /etc/httpd/conf. Puede ser que el fichero httpd.conf tenga "includes" de otros ubicados en /etc/httpd/conf.d.
El servidor Apache2 que queremos utilizar para acceder a nuestros repositorios SVN lo vamos a configurar para que se ejecute bajo un usuario independiente (p.e. svn). Crearemos el usuario svn bajo el grupo svn, y modificaremos las directivas correspondientes en el httpd.conf (User y Group).
Si queremos que el servidor esté accesible en un puerto diferente al habitual (80) también lo debemos indicar en el httpd.conf (Listen). Si, además, nos interesa que las conexiones al servidor vayan cifradas, activaremos SSL (puerto por defecto 443).
La parte que más nos interesa en la configuración de Apache, es aquella donde se define el acceso a nuestros repositorios SVN; y donde se establece el control de acceso a directorios.
Ejemplo C.1. Configurar Apache para acceder a un repositorio SVN
<IfModule mod_dav.c><br/>
<br/>
<IfModule mod_authz_svn.c><br/>
<br/>
<Location /svn><br/>
<br/>
DAV svn<br/>
<br/>
# Directorio bajo el cual están los repositorios.<br/>
<br/>
SVNParentPath /home/SVN<br/>
<br/>
# Autoversionado para las actualizaciones con WebDAV<br/>
<br/>
SVNAutoversioning on<br/>
<br/>
AuthType Basic<br/>
<br/>
AuthName "Repositorio Subversion"<br/>
<br/>
AuthUserFile /etc/httpd/conf/svn-auth-file<br/>
<br/>
AuthzSVNAccessFile /etc/httpd/conf/svn-acl-file<br/>
<br/>
Require valid-user<br/>
<br/>
</Location><br/>
<br/>
</IfModule><br/>
<br/>
</IfModule><br/>
<br/>
¿Qué hemos definido en el ejemplo anterior?
-
Directorio del servidor que contiene los repositorios SVN (SVNParentPath). De este modo, acceder a un directorio de nuestro repositorio, será tan simple como indicar una URL del tipo http://nuestroservidor/svn/path; por ejemplo https://pacom.atica.um.es/svn/MNCS/.
-
Activado (o no) del autoversionado para las actualizaciones con WebDAV (SVNAutoversioning).
-
Usaremos la autenticación básica por usuario y contraseña (AuthType Basic); indicando un mensaje para la ventana de autenticación (AuthName). Previamente, habremos creado un fichero de usuarios con el comando htpasswd; y otro (de texto) indicando el control de acceso por directorios (AuthUserFile y AuthSVNAccessFile). En el ejemplo, además, forzamos la autenticación (Require valid-user).
Ejemplo C.2. Creación de los ficheros de usuarios y de control de acceso
# htpasswd -cm /etc/httpd/conf/svn-auth-file juanlu<br/>
<br/>
New password:<br/>
<br/>
Re-type new password:<br/>
<br/>
Adding password for user juanlu <br/>
<br/>
# htpasswd -m /etc/httpd/conf/svn-auth-file pacom<br/>
<br/>
New password:<br/>
<br/>
Re-type new password:<br/>
<br/>
Adding password for user pacom <br/>
<br/>
# cat /etc/httpd/conf/svn-acl-file<br/>
<br/>
[/]<br/>
<br/>
* = r<br/>
<br/>
[MNCS:/]<br/>
<br/>
juanlu = rw<br/>
<br/>
pacom = rw<br/>
<br/>
[SIDYGA:/]<br/>
<br/>
juanlu = rw<br/>
<br/>
fjcosta = rw
El fichero de usuarios de Apache se crea con la utilidad "htpasswd" del propio Apache.
El fichero de control de acceso de usuarios a directorios, será un fichero de texto como el del ejemplo anterior. Podemos ver que para cada ruta a proteger se puede indicar el nombre del repositorio y el path correspondiente dentro del mismo. Si indicamos [/] estamos refiriéndonos a todos los repositorios accesibles por Apache.
Finalmente, y una vez terminada la configuración de Apache para SVN, arrancaremos el servidor Apache con
# apachectl start
En el caso de que ya estuviera arrancado se puede parar y arrancar con:
# apachectl restart
D. Instalación del cliente TortoiseSVN
En el momento de escribir estas líneas la última versión estable de TortoiseSVN es la 1.2 que incluye SVN 1.2.
¿Dónde puedo encontrar el software? En TortoiseSVN, siguiendo el enlace Download, encontraré la versión para XP/Win2k (las versiones anteriores están tanto para NT4/Win2k/XP como para Win98/Me). También encontraré el paquete que me permite trabajar con TortoiseSVN en castellano (español).
¿Cómo lo instalo? Es tan sencillo como bajar el software de instalación y ejecutarlo. Haré lo mismo con el paquete de lenguaje castellano. Una vez instalado, entrando en el explorador de archivos y pulsando el botón derecho del ratón, comprobaremos que aparece una nueva opción de menú: TortoiseSVN. Si quiere cambiar el idioma (por defecto funciona en inglés), entraré por "Settings" y elegiré "Español".
E. Servidor SVN de MNCS.
El servidor de pruebas de MNCS, mncs.atica.um.es, es un PC con procesador Pentium IV a 3GHz y 1Gb de RAM, además de un disco duro de 120Gb. El sistema operativo es Fedora Core 2 y tiene, en el momento de escribir estas líneas, Subversion 1.1.1.
La instalación de Subversion 1.1.1 sobre Fedora Core 2 ha sido muy sencilla, ya que esta distribución de Linux ya traía Apache 2 y Subversion 1.0.9. Con la utilidad "yum" he actualizado sin problemas a Subversion 1.1.1. Realmente, los únicos RPM que hacen falta para instalar o actualizar Subversion en Fedora Core 2, son "subversion.i386" y "mod_dav_svn.i386".
Los RPM de Subversion para Fedora Core 2 los puedo encontrar en http://download.atrpms.net/testing/packages/fedora-2-i386/atrpms/.
Al escribir estas líneas, en mncs.atica.um.es tenemos los repositorios de MNCS y PERSONAL funcionando; además del de SERPA (de momento vacío, pero listo para que empiecen a trabajar). Los repositorios están bajo el directorio /SVN. Además existe un directorio /SVN/backups para las copias de seguridad.
En mncs.atica.um.es existe el usuario svn que es el propietario de los repositorios. Como el servidor web (Apache) lo ejecuta el usuario apache, he metido al usuario apache en el grupo svn (de forma que pueda escribir en los repositorios).
En el directorio bin del usuario svn (/home/svn/bin) hay utilidades, como puede ser el script de copias de seguridad (svn.dump), otro para cargar una copia en un repositorio vacío (svn.load), etc.
El usuario svn tiene un proceso cron que lanza las copias de seguridad todos los días a las 7AM. Luego, manualmente, voy llevándolas a la unidad G de Novell.
En todos los repositorios tenemos activados "hooks" pre-commit y post-commit. Se trata de sendos scripts situados en el directorio hooks del repositorio (por ejemplo, /SVN/MNCS/hooks). El primero, pre-commit, asegura que cada "commit" (actualización) del repositorio lleva asociado un comentario. El segundo, post-commit, se está usando (en el momento de escribir estas líneas) para enviar un correo electrónico informativo de los cambios que conlleva el commit que se ha hecho.
F. Cómo encontrar documentación.
Existe un libro muy bueno sobre Subversion, a cuyo formato electrónico (HTML y PDF) se puede acceder desde: http://svnbook.red-bean.com/.
En el caso del cliente TortoiseSVN, existe una excelente documentación en la propia web del proyecto (además en castellano): http://tortoisesvn.tigris.org/docs.html.
G. Lista de repositorios.
Los repositorios en explotación están en un servidor de Sistemas (svn.atica.um.es ), accesibles por https (https://svn.atica.um.es):
Tabla G.1. Repositorios Subversion en svn.atica.um.es
| Repositorio |
URL |
| MNCS |
https://svn.atica.um.es/svn/MNCS/ |
| PERSONAL |
https://svn.atica.um.es/svn/PERSONAL/ |
| DUMBO |
https://svn.atica.um.es/svn/DUMBO/ |
| FRAMEWEB |
https://svn.atica.um.es/svn/FRAMEWEB/ |
| AUTOMATRICULA |
https://svn.atica.um.es/svn/AUTOMATRICULA/ |
| CEURI |
https://svn.atica.um.es/svn/CEURI/ |
| CURIEUTILS |
https://svn.atica.um.es/svn/CURIEUTILS/ |
| ERASMUS |
https://svn.atica.um.es/svn/ERASMUS/ |
| PAGINA |
https://svn.atica.um.es/svn/PAGINA/ |
| TELEMATICA |
https://svn.atica.um.es/svn/TELEMATICA/ |