Control de Versiones

Documentos relacionados
Enginyeria del Software III ( ) CONTROL DE VERSIONES CON SUBVERSION. Roberto García Despatx EPS 3.15

Tema 12 Control de versiones

REPOSITORIOS. Ing. Ismael Castañeda Fuentes, MSc Grupo de Investigación UNBD Universidad Nacional de Colombia Marzo de 2011

La tortuga y los documentos: Tortoise + Subversion

Tutorial: Primeros Pasos con Subversion

Control de versiones con Subversion

Control de versiones con Subversion. Martín Gaitán y Pablo Martínez FCEFyN, Universidad Nacional de Córdoba Junio de 2007

Control de versiones con Subversion

Contenido. Curso de subversion. Problemas comunes. Problemas: Situación: Introducción a los sistemas de control de versiones

Control de Versiones Utilizando SVN

Gestión de la configuración en el software (SCM) Ingeniería de software Eduardo Ferreira, Martín Solari

INGENIERÍA DE SOFTWARE ADMINISTRACION DE CONFIGURACIONES Rubby Casallas, Juan Pablo Quiroga, Andrés Yie

SUBVERSION Y SUBCLIPSE

Subversion: Desarrollo colaborativo

Plan de Gestión de Configuración. Universidad Nacional de la Patagonia Austral

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

Elementos requeridos para crearlos (ejemplo: el compilador)

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Gestión de la Configuración

Control de Versiones con Subversion

Gestión de la Configuración (SCM) Introducción a la Ingeniería de Software

Programas que permiten gestionar un repositorio de archivos y sus distintas versiones Utilizan una arquitectura cliente-servidor

Proyecto Tutelkán. Tutelkan Web Platform (TWP) - Manual de Usuario

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

CVS Concurrent Versions System Manual de Usuario

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

CAPÍTULO 2 Sistemas De Base De Datos Multiusuarios

Introducción a las redes de computadores

SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÜBLICAS DIRECCIÓN DE TECNOLOGÍAS DE LA INFORMACIÓN Y LAS COMUNICACIONES

GIT Dinahosting 3. Hola!

[Clave Proyecto] - Plan de Administración de la Configuración del Proyecto

Componentes de Integración entre Plataformas Información Detallada

07036 DESARROLLO WEB COLABORATIVO EN FORJA

SISTEMA DE ESPECIICACION DE REQUERIMIENTOS

Capacitación: Control de versiones con SVN

Manual de usuario del Centro de Control

Herramientas para colaborar en la red: SCM

EXAV. Manejo del Ambiente Controlado. Versión 1.2

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

1. INTRODUCCIÓN 2 2. EVERDRIVE LITE 3 3. SINCRONIZADOR DE EVERDRIVE 4 4. VISTA GENERAL DE LAS OPCIONES DE LA APLICACIÓN 5

Modelos de Help Desk

Jornadas de Introducción a la Ingeniería + Trabajo en Grupo = Herramientas de Gestion de Proyectos Software

Subversion (SVN) Sistema de Control de Versiones Sucesor de CVS

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Subversion como herramienta para el control del versiones

CAPITULO 8. Planeamiento, Arquitectura e Implementación

Oficina Online. Manual del administrador

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

SIEWEB. La intranet corporativa de SIE

Manual de Usuario Comprador Presupuesto

CONTROL DE DOCUMENTOS

Unidad III. Software para la administración de proyectos.

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

PROCEDIMIENTO VERSION: 03 ELABORACION Y CONTROL DE DOCUMENTOS PROCESO DE PLANIFICACION DEL SISTEMA INTEGRADO DE GESTION

Gestión de Configuración del Software

Prácticas ITIL para un mejor flujo de trabajo en el helpdesk

INFORME Nº GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

Cómo usar Subversion. con Windows XP/2000/2003.

Tema 8: Gestión de la Configuración

Manual de Usuario Comprador. Módulo Administración de Presupuesto. Iconstruy e S.A. Serv icio de Atención Telefónica:

Unidad 1. Fundamentos en Gestión de Riesgos

Sistemas de Operación II

Seven ERP Guía De Referencia - Imágenes

3. GESTIÓN DE CONFIGURACIÓN DE SOFTWARE

Modelo de Proceso de Desarrollo de Software

Guía de Instalación. Glpi

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

Windows Server Windows Server 2003

Adelacu Ltda. Fono Graballo+ Agosto de Graballo+ - Descripción funcional - 1 -

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

El Control de Versiones en el aprendizaje de la Ingeniería Informática: Un enfoque práctico

Manual de Usuario. Gestor Documental

POLÍTICAS DE SEGURIDAD PARA EL DESARROLLO DE SISTEMAS DE CAPUFE

GedicoPDA: software de preventa

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

Creación y administración de grupos de dominio

SISTEMAS DE ARCHIVOS DISTRIBUIDOS

Autenticación Centralizada

SCGDoc. SisConGes & Estrategia

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Metodología básica de gestión de proyectos. Octubre de 2003

Plastic SCM platform. Plastic SCM es el nombre que engloba toda la gama de productos de Gestión de Configuración de Códice Software.

Capítulo 11. Conclusiones y trabajo futuro

Venciendo a la Pesadilla de la Gestión de Usuarios

Procedimiento y Pautas básicas a tener en cuenta para la puesta en producción de un sistema

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Guía rápida del usuario. Dolibarr.es ERP/CRM versión1.0

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

Oficina Online. Manual del Administrador

Universidad Tecnológica acional Facultad Regional Buenos Aires

REGISTRO DE EMPRESAS Y PERSONAS BASE DE INFORMACIÓN DE CLIENTES & CONTACTOS

GMF Gestor de incidencias

Guía rápida del usuario. Disco duro virtual.

Estrategia de Backup para los Sistemas SAP R/3 GOBERNACIÓN DE CUNDINAMARCA

Análisis y diseño del sistema CAPÍTULO 3

Guía rápida del alumno. Versión 6.2

CURSO COORDINADOR INNOVADOR

Subversion en Eclipse

Transcripción:

Control de Versiones Juan Oviedo Índice de contenido Introducción...1 Gestión de la Configuración de Software...1 Control de versiones...2 El repositorio...2 Mecanismos de control...2 Modelo bloquear-modificar-desbloquear...2 Modelo copiar-modificar-combinar...3 Sistemas de Control de Versiones...4 Clasificación...4 CVS vs SVN...4 Manejo de Subversion...4 Glosario de términos...6 Introducción Las actividades relacionadas con el desarrollo de software son generalmente muy dinámicas, y los productos generados, altamente susceptibles al cambio. Cuando los cambios son muchos, muy rápidos o hay mucha gente involucrada en ellos, se necesita llevar una gestión dedicada para evitar el descontrol. La actividad que se encarga del manejo de cambios se denomina Gestión de la Configuración del Software y se relaciona con la identificación, control, correcta implementación y comunicación a las partes interesadas, de los cambios; durante todo el ciclo de vida del software. No se debe confundir con Mantenimiento de Software, que es la actividad que entra en vigencia una vez que el software está en uso. Gestión de la Configuración de Software Durante el proceso de desarrollo de software se producen elementos (códigos fuente, ejecutables, documentos y datos) que inevitablemente cambiarán. Los cambios se pueden presentar por distintos motivos: por los requerimientos, el dominio de aplicación, en las funcionalidades deseadas, cambios externos al proyecto (modificaciones en el presupuesto o en el equipo de desarrollo), etc. Para una adecuada gestión de los cambios, se debe partir de una línea base, a la cual se llega a través de análisis y consenso formales de los elementos que componen la configuración. Cada cambio que se deba hacer sobre estos elementos deberá pasar cada una de las siguientes etapas formales para hacerlos efectivos: identificación, control de versiones, control de cambios y auditoría. La identificación implica diferenciar los elementos y proveer un mecanismo para referirse a cada uno de ellos unívocamente y a sus relaciones de dependencia, pertenencia y asociación. Se debe acordar una forma de asignar versiones a cada elemento, generalmente con números. El control de versiones es el seguimiento de las versiones en que se encuentra cada elemento, más la posibilidad de observar el historial de modificaciones que se realizó sobre los mismos. El control de cambios se refiere a la designación de las responsabilidades de las personas involucradas en la modificación de un elemento y los procedimientos que se deben llevar a cabo para esta tarea. La auditoría es la tarea que se encarga de corroborar que todos los procedimientos se han aplicado correctamente y que los productos obtenidos cumplen con las características de calidad deseadas.

Control de versiones El control de versiones involucra procedimientos y herramientas para gestionar los cambios en los elementos creados durante el ciclo de vida del software. Comenzando por la asignación de un número de versión para la configuración de la línea de base, se lleva un registro de las revisiones corrientes e históricas de cada elemento y del proyecto en su conjunto. Usualmente las distintas revisiones de cada objeto se relacionan formando un grafo 1 de dependencias representando la evolución del mismo. Todo esto debe estar organizado de manera controlada, estableciendo procedimientos y permisos de acceso para las modificaciones. El repositorio Es básicamente un árbol del sistema de archivos (directorio), centralizado y controlado por una herramienta que gestiona los permisos y conexiones para leer o escribir dichos archivos, y guardar un registro histórico de las modificaciones que se les realizan. El procedimiento de modificación de un componente consiste, de manera general, en adquirir una copia local del componente para trabajar en ella. Luego el componente modificado se establece como una nueva revisión en el repositorio. Mecanismos de control Para permitir un acceso colaborativo al repositorio (para modificación y lectura), las herramientas utilizan diferentes estrategias, orientadas a evitar conflictos al compartir archivos. Estos conflictos se generan cuando dos (o más) personas trabajan en el mismo archivo, al terminar de modificarlo y querer impactar sus cambios en el repositorio, corren el riesgo de sobreescribir las modificaciones del otro. Modelo bloquear-modificar-desbloquear En esta estrategia, el repositorio permite que solamente un usuario modifique un archivo, para ello primero debe bloquearlo. Cuando otro usuario intente bloquearlo, el sistema no lo permitirá y deberá esperar a que el primero termine y lo desbloquee. Este modelo ocasiona ciertos problemas: Tiempos muertos: debido a que alguien bloquea un archivo y olvida desbloquearlo, mientras que otro usuario necesita utilizarlo. Esperas injustificadas: en el caso de que un usuario deba modificar una sección diferente de la que está modificando el usuario bloqueante. Falso sentido de seguridad: en el caso de dependencias entre los archivos, se puede llegar a tener inconsistencias o deadlocks. Estos problemas pueden ser manejados en grupos de desarrollo pequeños y poco distribuidos, donde la comunicación por vías convencionales es factible. 1 http://es.wikipedia.org/wiki/grafo_(estructura_de_datos)

Modelo copiar-modificar-combinar Este modelo permite que múltiples usuarios trabajen simultáneamente en sendas copias locales del repositorio (working copy). Al momento de actualizar el repositorio con los cambios realizados, el sistema se encarga de comparar las versiones y combinarlas (generalmente el usuario participa en la toma de decisiones al respecto). La mayoría de los problemas del modelo anterior se resuelven utilizando éste. Los conflictos en este modelo se dan cuando dos (o más) usuarios modifican la misma porción de un archivo. La resolución de este conflicto involucra comunicación entre los desarrolladores. El modelo copiar-modificar-combinar funciona correctamente cuando se trata de archivos de líneas de texto (por ejemplo, códigos fuente). Pero en el caso de archivos binarios (por ejemplo, imágenes, sonidos, etc.) donde no se tiene una representación legible del contenido, la mejor solución es utilizar el modelo bloquear-modificar-desbloquear. Sistemas de Control de Versiones Existen múltiples sistemas de control de versiones, algunos de ellos son: CVS, Subversion (svn), SourceSafe, ClearCase, Darcs, Bazaar, Plastic SCM, Git, Mercurial, etc. Cada cual con sus propias características, pero basados en los mismos conceptos.

Clasificación Una clasificación que se puede hacer de los sistemas de control de versiones es la que los divide en: Centralizados: donde existe un único repositorio de todo el proyecto, del cual es responsable un único usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir flexibilidad, pues todas las decisiones importantes (como la creación de una nueva rama) necesitan la aprobación del responsable. Algunos ejemplos son CVS y Subversion. Distribuidos: cada usuario tiene su propio repositorio. No es necesario tomar decisiones centralizadamente. Los distintos repositorios pueden intercambiar y mezclar revisiones entre ellos. Ejemplos: Git y Mercurial. CVS vs SVN CVS y Subversion (también conocido como svn) son los sistemas centralizados de control de versiones libres más difundidos. Características CVS SVN Licencia GPL Apache/BSD Repositorio Basado en archivos Basado en BerkleyDB Versionado Por archivo Por repositorio Transferencia Archivos completos Diffs Rollback Si No (pero se puede reemplazar con una versión correcta anterior) Transacciones No Si Tags & Branches Por medio de etiquetas y comentarios Por medio de copia de directorios dentro del repositorio Soporte de archivos Archivos de texto Archivos de texto y binarios Manejo de Subversion La arquitectura de Subversion se ilustra en la Figura 1: Arquitectura de Subversion. Funciona como un sistema cliente-servidor, donde el servidor admite conexiones de diversos tipos al repositorio. Los clientes pueden utilizar una interfaz de línea de comandos o un cliente gráfico para descargar una working copy para trabajar sobre ella y publicar sus modificaciones.

Figura 1: Arquitectura de Subversion Para crear por primera vez el repositorio (en el servidor) se puede usar el comando: $ svnadmin create [path al repositorio] $ svn import [directorio] file:///[path al repositorio]/[nombre del proyecto] -m "Primera importación" Se recomienda que al momento de la creación del repositorio, el directorio a importar tenga la siguiente estructura: repositorio/ /trunk /branches /tags Dentro del directorio trunk se encontrarán los archivos de la rama principal de desarrollo, los otros directorios contienen copias de las ramas y etiquetas respectivamente. Para ver un listado del contenido del repositorio (local): $ svn list file:///[path al repositorio]/[nombre del proyecto] Para comenzar a trabajar se debe descargar una copia local del repositorio, es decir una working copy, de la siguiente manera (desde un servidor remoto, por http): $ svn checkout http://[url del repositorio]/[subdirectorio] A partir de este paso, el ciclo de trabajo típico consiste en la secuencia de pasos (entre paréntesis las opciones del comando svn): actualizar working copy (update), realizar cambios (add, delete, copy, move), examinar los cambios (status, diff), posiblemente deshacer cambios (revert), combinar las modificaciones y resolver conflictos (update, resolve) y confirmar y publicar los cambios (commit).

Glosario de términos Branch: El desarrollo puede ramificarse en un momento dado, de forma que dos copias de un archivo puedan ser modificadas independientemente. Check out: Solicitar una working copy desde el repositorio. Ésta refleja el estado actual del proyecto. Commit/Check in: Enviar los cambios desde la working copy al repositorio. Conflicto: Situación en la que dos desarrolladores tratan de hacer commit de los cambios realizados a la misma porción de un archivo. Log message: Comentario describiendo los cambios, que se adjunta a una revisión al momento de hacer commit. Repositorio: Copia maestra del proyecto que almacena la revisión histórica completa. Revisión: Cambio efectuado en la historia de un archivo o conjunto de archivos. Algunos sistemas lo manejan a nivel archivo, otros a nivel proyecto. Update: Traer los cambios realizados por otros usuarios del repositorio a la working copy local. En ese momento se muestran los cambios de la working copy que no han sido confirmados. Working copy: La copia local en la que un usuario realiza modificaciones al proyecto. Bibliografía WIKI1: Control de versiones,, http://es.wikipedia.org/wiki/control_de_versiones WIKI2: Gestón de la configuración de software, http://es.wikipedia.org/wiki/gestión_de_la_configuración WIKI3: Subversion,, http://es.wikipedia.org/wiki/subversion WIKI4: CVS, http://es.wikipedia.org/wiki/cvs Pressman: Roger S. Presman, Ingeniería del Software, un enfoque práctico, 2002 cvs1: Moshe Bar, Karl Fogel, Open Source Development with CVS, svn1: Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato, Version Control with Subversion: For Subversion 1.6: (Compiled from r3773), [WIKI1][WIKI2][WIKI3][WIKI4][Pressman][cvs1][svn1]