Sei sulla pagina 1di 48

Gestión de configuración con Subversion

Núcleo C.C., Departamento I+D+i


Junio 2009
Ignacio González T.

Junio 2009 GC con Subversion 1


Índice
• Conceptos básicos y entorno
– Gestión de Configuración: definición, objetivos
– Entorno de trabajo
– Subversion, RCS, PVCS, SourceSafe
– Entorno organizativo
• Metodología de GC con Subversion
– Organización de directorios
– Instalación
– Procedimientos
– Recapitulación
• Cierre de versiones
• Demostración de uso

Junio 2009 GC con Subversion 2


Conceptos básicos: gestión de configuración (1)

• Instrucciones técnicas existentes:


– I.T. Departamento: 4004 0060 (1997) Con PVCS y RCS
– I.T. AVI-2015: 4289 9003 (2007) Con Subversion
– No existe aún I.T. de Departamento con Subversion
• Lecturas recomendadas:
– Version Control with Subversion
• Disponible en http://svnbook.red-bean.com/index.en.html
• Disponible en \\ELIOPG3\FAM\Subversion\svn-book.pdf
– Ayuda de TortoiseSVN
• Disponible en http://tortoisesvn.net/support

Junio 2009 GC con Subversion 3


Conceptos básicos: gestión de configuración (2)

• GC: conjunto de actividades encaminadas a


identificar, organizar y controlar las
modificaciones de los productos y de sus partes
constituyentes:
– código (programas, CPLDs, FPGAs)
– docs. descriptivos de software, hardware, mecánica…
– procedimientos, datos y herramientas de generación

Junio 2009 GC con Subversion 4


Gestión de configuración: objetivos (1)

• Sistematizar la construcción de los productos a partir


de sus componentes
• Trabajar simultáneamente en varias versiones
• Resolver conflictos de acceso entre desarrolladores
• Disminuir la duplicidad de código
• Auto-documentar estructura e historia del producto
• Normalizar la documentación de cierre
• Garantizar completitud, consistencia y seguridad del
producto cerrado.

Junio 2009 GC con Subversion 5


Gestión de configuración: objetivos (2)

• Objetivo
it he cus
fundamental: Dryop
conseguir que
las diferentes opus
Paranthr
versiones de
un producto
Homo sapiens
sean
reproducibles
?

Junio 2009 GC con Subversion 6


Conceptos básicos: entorno de trabajo
Red

Servidor Cliente 1
Repositorio RDE5

Cliente 2
Repositorio SHERPA

Junio 2009 GC con Subversion 7


Subversion, PVCS, RCS, SourceSafe
• PVCS: el más antiguo en Núcleo (sobre MS-DOS)
– Filosofía básica: bloquear antes de modificar
– Usado en S3e
• RCS: versión freeware de PVCS (nombres largos)
– RCS Windows: IHM gráfico en VB6.0
– Usado en Serie 5, Sherpa, etc.
• SourceSafe: producto de Microsoft
– No lo usa ni Microsoft
– Usado en CUPER, CS, etc. (no normalizado)
• Subversion: open source, sucesor de VCS
– Filosofía básica: mezclar después de modificar
– Usado en ERTMS, RDE-5; se usará en S3e, nuevos Sherpa, etc.

Junio 2009 GC con Subversion 8


Características de Subversion (1)
• Versionado de archivos, directorios, cambios de
nombre y metadatos
– En PVCS y RCS sólo pueden versionarse archivos
• Subida (commit) atómica de archivos y directorios
– Cada subida se realiza sobre todos los elementos
cambiados desde la última actualización o bajada, y
asigna un número de revisión nuevo a todo el
repositorio
– En PVCS y RCS cada archivo tiene su propio árbol de
revisiones.
– Atómica: la subida es “todo o nada”

Junio 2009 GC con Subversion 9


Características de Subversion (2)
• Modelo cliente / servidor
– Protocolos: http[s]:, svn[+ssh]:, file: (¡solo pruebas!)
– En PVCS y RCS se mapean unidades de disco:
corrupción
• Versionado de archivos binarios eficiente
• Modelo de acceso concurrente tipo copia–
modificación–fusión
– En PVCS y RCS: bloqueo–modificación–desbloqueo.
– Los accesos concurrentes se permiten sin restricciones.
– Los conflictos se resuelven justo antes de subir los
Junio 2009cambios, fusionándolos con asistencia del usuario.
GC con Subversion 10
Conceptos de GC en Subversion (1)

• Repositorio (repository): conjunto de elementos


de configuración (EC) mantenidos en un servidor
– Conceptualmente es un árbol de directorios que
evoluciona en el tiempo.
– Contiene los EC y toda su historia
– En un servidor pueden residir varios repositorios

Junio 2009 GC con Subversion 11


Conceptos de GC en Subversion (2)

• Un repositorio puede alojar uno o más proyectos /


productos o familias de productos
– Opción 1: un repositorio para todo el Departamento
• Los productos / familias se ubican en directorios diferentes
• Más fácil copiar elementos de una familia a otra
– Opción 2: un repositorio por familia
• Más fácil de mantener y administrar
• Ésta es la opción elegida

Junio 2009 GC con Subversion 12


Conceptos de GC en Subversion (3)

• Revisión (revision): estado concreto del árbol de


directorios que constituye un repositorio
– Es una foto del árbol en un momento dado, junto con sus
propiedades en ese momento (autor de la foto, hora,
comentarios, etc.)
– El repositorio es una secuencia de estas fotos ordenadas en
el tiempo por número de revisión (0, 1, 2, …)

Junio 2009 GC con Subversion 13


Conceptos de GC en Subversion (4)

• Copia de trabajo (workcopy): árbol de directorios


con los ECs del repositorio (o de una parte), ubicado
en un ordenador cliente, y listo para ser editado,
compilado o manipulado.
– Se obtiene inicialmente de una revisión de un repositorio,
a partir de un directorio del mismo (checkout).
– La copia de trabajo mantiene información gestionada por
Subversion en subdirectorios ocultos de nombre .svn

Junio 2009 GC con Subversion 14


Conceptos de GC en Subversion (5)

• Tronco (trunk): línea de desarrollo principal de un


proyecto / producto / familia
• Rama (branch): línea de desarrollo subordinada, o
de tiempo limitado.
– En Subversion se implementan mediante copias del
tronco u otras ramas en un subdirectorio.
– En PVCS, RCS las ramas son propias de cada archivo,
no del conjunto.

Junio 2009 GC con Subversion 15


Conceptos de GC en Subversion (6)
• Etiqueta (tag): copia congelada de una revisión
del repositorio.
– Documentan una versión concreta de un producto (al
cerrarlo, al enviarlo a validación, etc.)
– En Subversion se implementan mediante copias del
tronco o de una rama en un subdirectorio.
– Una etiqueta es una rama sin vocación de evolucionar
– En PVCS, RCS las etiquetas son nombres que se
pueden asignar a un conjunto de parejas (archivo, nº
revisión)

Junio 2009 GC con Subversion 16


Repositorios en PVCS y RCS
Servidor (disco H:\)
Familia ELITEL5
Cliente
Archivo de
repositorio
fu2.c fu2.o
(logfile)
fu1.c,v fu2.c,v
Archivo de
fu3.c trabajo
(workfile)
fu3.c,v
Revisión

Familia ELICOB (S3e)

Junio 2009 GC con Subversion 17


Archivos de repositorio en PVCS y RCS

fu1.c,v E5V2_0 Revisiones


E5XV1_2B
troncal
R 1.1.2.3
R 2.1 E5XV1_2A
R 1.2.1.1 R 1.1.2.2 E5XV1_1
E5AAAV1_0 R 2.0
R 1.2.1.0 R 1.1.1.1 R 1.1.2.1
R 1.2 E5XV1_0
R 1.1.1.0 R 1.1.2.0
Base de R 1.1
rama
R 1.0 Etiqueta (de
versión)

Rama Tronco

Junio 2009 GC con Subversion 18


Versiones en PVCS y RCS

Versión Versión Versión Versión


E5V1_0 E5V1_1 E5V1_2 SXV1_0
fu1.c R1.0 R1.0 R1.1 R1.1

fu2.c R1.1 R1.2 R1.2 R1.1.1.0

fu3.c R1.0

fu1.h R1.0 R1.0 R1.0 R1.0

Junio 2009 GC con Subversion 19


Repositorios en Subversion
Servidor (http://...)
Repositorio RDE5 Cliente
/tronco C:\Usuarios\RDE5
fu2.c
bar5.c
bar9.c
3 /etiquetas fu2.c fu2.o
/RDE5v1.0
fu1.c
fu2.c
bar5.c Copia de
/tronco
Revisión fu1.c trabajo
fu2.c
2 /etiquetas (workcopy)
/RDE5v1.0 bar9.c
fu1.c
fu2.c

/tronco
fu1.c
1 fu2.c
/etiquetas

Junio 2009 GC con Subversion 20


Conceptos básicos: entorno organizativo

• Dos actores:
– Desarrollador
• obtener, modificar y subir revisiones
• obtener informes
– Responsable de Gestión de Configuración de una familia
• crear (o autorizar creación de) repositorio inicial
• crear (o autorizar creación de) nuevas ramas y etiquetas
• depurar el directorio de familia
• coordinar acceso y posibles fusiones
• vigilar buen uso

Junio 2009 GC con Subversion 21


Metodología: organización de directorios (1)

• Cada repositorio tendrá una organización conceptual


de directorios similar
– Conceptual: la implementación real depende del sistema
de almacenamiento (FSFS, Berkeley DB)
• La organización se basa en recomendaciones de
expertos y en experiencias en Núcleo
– Pero no está impuesta por la herramienta
– Y puede adatarse a necesidades especiales

Junio 2009 GC con Subversion 22


Metodología: organización de directorios (2)
/tronco
/SW /SW
/HW /Fuentes
/Paquete1
/… /Paquete2…
/ramas /Docs
/rama1 /Ejecs
/SW
/Herrs
/HW
/… /HW
/rama2 … /Docs
/etiqueta /MEC
/etiqueta1 /Docs
/SW /SIST
/HW /Docs
/…
/etiqueta2 …

Junio 2009 GC con Subversion 23


Metodología: organización de directorios (3)
• Réplica en el cliente: C:\Usuarios\RDE5
\SW
a partir de un tronco, \Fuentes
rama concreta o \APLIC
\BSP
etiqueta concreta \OS…
\Docs
• O incluso de un \Ejecs
\Herrs
subdirectorio de \HW
menor nivel (SW, \Docs
\MEC
etc.) \Docs
\SIST
\Docs

Junio 2009 GC con Subversion 24


Metodología: instalación (1)

• Instalación en el cliente
– Cliente estándar de línea de comandos: Subversion 1.5.5 de CollabNet (en
\\eliopg3\FAM\Subversion)
• Existen versiones para Windows, Linux, FreeBSD, etc.
– Cliente gráfico para Windows: TortoiseSVN 1.5.7 (en
\\eliopg3\FAM\Subversion)
• Es una extensión al Explorer de Windows
• Puede usarse concurrentemente con cliente estándar (ojo: usar versiones
compatibles)
– Otros clientes (web, vía navegador)
• http://servidor/svn/repositorio/ Navegación básica última revisión
• http://servidor/viewvc/repositorio/ Más completo
– Añadidos: WinMerge, etc.

Junio 2009 GC con Subversion 25


Metodología: instalación (2)

• Instalación en el servidor
– Subversion 1.5.5 de CollabNet
– Hasta ahora (proyectos ERTMS: RBC, LEU): servidor
svnserve sobre Windows XP (protocolo svn:); sistema de
almacenamiento FSFS.
– A partir de ahora: servidor Apache 2.2 sobre RedHat
Linux 5.2 Server con módulos mod_dav, mod_dav_svn
(protocolo WebDAV/DeltaV sobre http:) y
mod_svn_authz; sistema de almacenamiento FSFS.

Junio 2009 GC con Subversion 26


Metodología: instalación (3)

• Configuración del servidor


– Creación de repositorios
svnadmin create /var/svn/productos/repositorio
– Alta de usuarios
htpasswd -cm /etc/opt/.../svn-auth-file nuevo_usuario
– Establecimiento de permisos de acceso
• Fichero de texto único (/etc/opt/.../svn_access_file)
• Un conjunto de usuarios y tipos de accesos (r / rw) por repositorio o
repositorio:directorio
– Ganchos (hooks): programas invocados en el servidor
• /var/svn/productos/repositorio/hooks/pre-commit ...
– Suelen ser programas bash, perl o python

Junio 2009 GC con Subversion 27


Metodología: instalación (4)
• Creación de la estructura de directorios inicial en un
repositorio
– Crear la estructura en un directorio temporal de un cliente
md C:\tmp\RDE5\tronco
md C:\tmp\RDE5\ramas
md C:\tmp\RDE5\etiquetas
md C:\tmp\RDE5\tronco\HW
md C:\tmp\RDE5\tronco\SW
md C:\tmp\RDE5\tronco\SW\Fuentes …
– Importar la estructura
svn import C:\tmp\RDE5 http://servidor/svn/RDE5 -m \
“Importación de la estructura inicial de directorios”

Junio 2009 GC con Subversion 28


Metodología: instalación (5)
• Creación de la estructura de directorios de trabajo en
un cliente
– Basta con bajar la revisión más reciente (HEAD) del
tronco:
svn checkout http://servidor/svn/RDE5/tronco \
C:\Usuarios\RDE5
– La primera vez que se accede al servidor se solicita el
nombre de usuario y su clave
• Estas credenciales se cachean
• Se puede limpiar la caché para cambiar de usuario

Junio 2009 GC con Subversion 29


Metodología: procedimientos (1)
• Habitualmente se trabajará sobre la última revisión
troncal
• No obstante, se trabajará sobre ramas cuando:
– Se desarrolle una variante del producto
• Rama de vida ilimitada (en principio)
• Podrá incorporar cambios realizados en el tronco o en otras ramas
(y viceversa)
– Se trabaje temporalmente en un grupo de cambios que
pueda interferir en el desarrollo troncal
• Rama de vida limitada
• Su contenido se acabará fusionando en el tronco (o en otra rama)

Junio 2009 GC con Subversion 30


Metodología: procedimientos (2)
• Se crearán etiquetas:
– En puntos estratégicos del desarrollo: antes de las pruebas
de integración, antes de la validación, etc.
– Tras el cierre de versión de un producto
• Los nombres de ramas y etiquetas deben ser
significativos
– rama/RDE-5_Iberdrola_UC
– rama/RDE-5_prueba_ucosii_2.88
– etiqueta/RDE-5_1.0_validacion_5
– etiqueta/RDE-5_version_1.0

Junio 2009 GC con Subversion 31


Metodología: procedimientos (3)

Junio 2009 GC con Subversion 32


Metodología: procedimientos (4)
• Los comentarios introducidos al subir cambios (o
crear ramas o etiquetas) deben ser autocontenidos,
completos y concisos
– Afectan a una revisión completa de TODO el repositorio,
no a un único fichero (a diferencia de RCS y PVCS)
– Ejemplos:
• SÍ: “Añadida implementación SW del nivel de enlace TCP/IP para
protocolo 60870-5-104, perfil de Iberdrola. Corregidos problemas
de auto-configuración en módulo Ethernet (BSP)”
• NO: “Comentarios del evaluador”. “Corrección”. “”

Junio 2009 GC con Subversion 33


Metodología: operaciones básicas (1)
• Ayuda:
svn help comando TortoiseSVN  Help

• Bajada inicial:
svn checkout SVN Checkout

• Cambios y nuevos archivos: con su editor favorito


• Añadido de nuevos archivos o directorios:
svn add TortoiseSVN  Add
– El añadido efectivo en el repositorio se hace en el commit

Junio 2009 GC con Subversion 34


Metodología: operaciones básicas (2)
• Borrado de archivos o directorios:
svn delete TortoiseSVN  Delete
– El borrado efectivo en el repositorio se hace en el commit
• Cambio de nombre o de lugar:
svn move TortoiseSVN  Rename
– El cambio efectivo en el repositorio se hace en el commit
• Examen de cambios en la copia de trabajo:
svn status TortoiseSVN  Check for modifications

Junio 2009 GC con Subversion 35


Metodología: operaciones básicas (3)
• Examen de diferencias con la revisión bajada:
svn diff TortoiseSVN  Compare with base

• Anulación de cambios realizados:


svn revert TortoiseSVN  Revert
– El cambio efectivo en el repositorio se hace en el commit
• Actualización de la copia de trabajo:
svn update SVN Update
– Ojo: se realiza una fusión (merge) automática
– Si hay cambios incompatibles, deben resolverse

Junio 2009 GC con Subversion 36


Metodología: operaciones básicas (4)
• Resolución de conflictos:
svn resolved TortoiseSVN  Resolve

• Subida de elementos modificados:


svn commit TortoiseSVN  SVN Commit
– Antes de subir fuentes, garantizar que compilan
• El control de versiones NO es un sistema de backup
– Agrupar subidas por grupos de cambios relacionados
– Subir cambios para prevenir conflictos innecesarios
• El control de versiones NO sustituye la comunicación entre
personas

Junio 2009 GC con Subversion 37


Metodología: operaciones básicas (5)
• Examen del historial de cambios:
svn log TortoiseSVN  Show log
TortoiseSVN  Revision graph
• Examen de cambios ente revisiones:
svn diff …Show log  Compare revisions
• Examen de repositorios (listados):
svn list TortoiseSVN  Repo-browser
• Exportación de revisiones (sin intención de realizar
cambios):
svn export TortoiseSVN  Export

Junio 2009 GC con Subversion 38


Metodología: operaciones avanzadas (1)
• Creación de ramas y etiquetas:
svn copy TortoiseSVN  Branch/Tag
– Para trabajar sobre una rama, emplear checkout o switch
– También sirve para copiar archivos o directorios
• Fusión de ramas:
svn merge TortoiseSVN  Merge
– Normalmente, compara dos revisiones de un tronco o rama y las
aplica a la copia de trabajo.
– Consultar capítulo 4 del libro.
• Transformación de una copia de trabajo de una rama a otra:
svn switch TortoiseSVN  Switch

Junio 2009 GC con Subversion 39


Metodología: operaciones avanzadas (2)
• Bloqueo de elementos:
svn lock TortoiseSVN  Get Lock
– A emplear sobre elementos no fusionables
• Desbloqueo de elementos:
svn unlock TortoiseSVN  Release Lock
• Otras conceptos avanzados: properties, sparse
directories, externals, etc.
– externals: útil para enlazar productos dependientes de
otros
– properties: metadatos (tipo de archivo, estilo de eol…)
– Consultar capítulo 3 del libro
Junio 2009 GC con Subversion 40
Metodología: operaciones avanzadas (3)
• Operaciones en el servidor:
svnadmin dump Vuelca repositorio a archivo dump
svnadmin load Puebla repositorio desde archivo dump
Útil para migrar repositorios al cambiar
de máquina, S.O., versión de svn…
svnlook Examina repositorio
svnsync Duplica repositorio
...
– Consultar capítulos 5 y 6 del libro

Junio 2009 GC con Subversion 41


Metodología: recapitulación (1)

• Ventajas frente a PVCS / RCS:


– ¡No hace falta lista de ficheros!
– ¡Se pueden subir varios ficheros a la vez!
– ¡No hace falta un FAMILIA.BAT!
– ¡Transacciones sin corrupciones!
– ¡No hace falta bloquear para modificar!

Junio 2009 GC con Subversion 42


Metodología: recapitulación (2)

• Características importantes:
– El manejo de etiquetas y ramas es muy
diferente de PVCS / RCS
– Las copias de trabajo ocupan el doble
– No se pueden eliminar revisiones
(“máquina del tiempo”)
– No se conservan las horas originales de los
elementos
Junio 2009 GC con Subversion 43
Metodología: recapitulación (3)
• Soporte externo:
– Listas de correo: users-subscribe@subversion.tigris.org
– Web del proyecto: http://subversion.tigris.org/
• Soporte interno:
– Foro de formación (FOROFO): http://zurg/phorum
– Para darse de alta:
• Dirección IP 192.9.200-207.x; máscara = 255.255.248.0
• Línea en fichero hosts: 192.9.200.216   zurg
• “Crear un nuevo perfil”

Junio 2009 GC con Subversion 44


Metodología: recapitulación (4)

Junio 2009 GC con Subversion 45


Cierre de versiones (1)
• Documentación de cierre:
– Copia del repositorio
– Información complementaria de cierre:
• Índice
• Descripción de los procedimientos de generación
• Informe de cierre
• Copia completa de la copia de trabajo
• Informe de estado de la copia de trabajo:
svn status –v –u >
EstadoCDT.txt
• Documentos no mantenidos en control de versiones
Junio 2009 GC con Subversion 46
Cierre de versiones (2)
• Procedimiento de cierre:
– Elaborar la documentación de cierre y comprobar la
generación del producto a partir de ella
– Bajar la documentación de cierre a Documentación (previa
aprobación del Jefe de Área)

Junio 2009 GC con Subversion 47


Demostración de uso
• Clientes:
– svn (línea de comandos)
– TortoiseSVN
– Interfaz Web simple
– Interfaz Web con ViewVC
• Servidor / repositorio:
– http://csvn/svn/arenero
– http://csvn/viewvc/arenero
[En fichero hosts: 192.9.203.185 csvn]

Junio 2009 GC con Subversion 48

Potrebbero piacerti anche