Subversion como herramienta para el control del versiones Pablo Sánchez Dpto. Matemáticas, Estadı́stica y Computación Universidad de Cantabria, Santander (Spain) p.sanchez@unican.es Pablo Sánchez (MATESCO) Control de versiones con subversion 1 / 11 Introducción Subversion Subversion Subversion [1] es una herramienta de software libre para el control de versiones. Subversion es capaz de manejar los cambios hechos sobre ficheros y directorios a lo largo de tiempo. Permite recuperar versiones antiguas y ver el historial de cambios de un sistema de archivos. Es una herramienta distribuida capaz de trabajar sobre diversos protocolos (svn, ssh, http, https). No es una herramienta de gestión de la configuración software, principalmente porque no está diseñada para manejar exclusivamente software, sino archivos arbitrarios. Diseñado para sustituir CVS (Concurrent Version System). Pablo Sánchez (MATESCO) Control de versiones con subversion 2 / 11 Introducción Subversion Arquitectura subversion Pablo Sánchez (MATESCO) Control de versiones con subversion 3 / 11 Introducción Subversion Nuestro repositorio y cuentas Usamos el cliente de subversion Subclipse (subversion en Eclipse) http://subclipse.tigris.org/. http://vm.ciencias.unican.es:20080/svn 5 repositorios: repos1 .. repos6 17 cuentas, nombres de usuario+password: user1, user1 Repos1 : User 1 a User3 Repos2 : User 4 a User6 Repos3 : User 7 a User9 Repos4 : User 10 a User13 Repos5 : User 13 a User17 Pablo Sánchez (MATESCO) Control de versiones con subversion 4 / 11 Introducción Subversion Crear una conexión con un repositorio 1 http://vm.ciencias.unican.es:20080/svn/repos1 2 Introducir usuario y password Pablo Sánchez (MATESCO) Control de versiones con subversion 5 / 11 Exportando proyectos Creando proyectos en Subclipse 1 Crear proyecto en el repositorio y exportarlo (checkout) a Eclipse. 2 Crear un proyecto en Eclipse e subirlo (import) al repositorio. Pablo Sánchez (MATESCO) Control de versiones con subversion 6 / 11 Flujo de trabajo subversion Proceso copia, modificación y mezcla Paco y Lola se descargan el archivo Paco y Lola modifican el archivo A A lee lee A A Paco Lola Lola sube el archivo primero A’ A’’ Paco Lola Paco intenta escribir, pero obtiene un error de recurso desincronizado A’’ A’’ escribe escribe fuera de sincronía A A’’ A’ A’’ Paco Lola Paco Lola Pablo Sánchez (MATESCO) Control de versiones con subversion 7 / 11 Flujo de trabajo subversion Proceso copia, modificación y mezcla Paco se descarga el archivo actualizado y conserva el editado La herramienta de control de versiones (o Paco) mezclan ambos archivos A’’ A’’ lee A’ A’’ A’’ Paco Lola Paco sube la versión combinada (los conflictos se marcan como resueltos) A’’’ A’’ Paco Lola La versión actualizada queda disponible para Lola A’’’ A’’’ lee escribe A’’’ A’’ A’’’ A’’’ Paco Lola Paco Lola Pablo Sánchez (MATESCO) Control de versiones con subversion 8 / 11 Flujo de trabajo subversion Flujo de trabajo subversion 1 Actualizar mi copia para recibir los nuevos cambios (update). 2 Modificar lo que sea necesario. 3 Subir los cambios al repositorio (commit). 4 En caso de fuera de sincronı́a, realizar una nueva actualización (update). 5 Si no hay conflictos, subir los cambios (commit). 6 Si hay conflictos, arreglarlos manualmente, marcarlos como resuelto y subir los cambios (commit). Pablo Sánchez (MATESCO) Control de versiones con subversion 9 / 11 Flujo de trabajo subversion Primeras pruebas 1 Crear archivos Runner, Left, Right, LeftLeft y RightRight. 2 Subirlos al repositorio 3 Hacer un update 4 Modificar todos Left, añadiendo nuevos métodos al final. 5 Subir Left 6 Modificar todos el Right, modificando el mensaje que se imprime. 7 Subir uno el right. 8 Intentar subir los otros el right. Pablo Sánchez (MATESCO) Control de versiones con subversion 10 / 11 Bibliografı́a Referencias I Ben Collins-Sussman, C. Michael Pilato, and Brian W. Fitzpatrick. Version Control with Subversion. O’Reilly, June 2004. Pablo Sánchez (MATESCO) Control de versiones con subversion 11 / 11