Control de Versiones

12
CONTROL DE VERSIONES Ingeniería de Software Andrés Salinas Bendeck

description

Control de Versiones. Ingeniería de Software Andrés Salinas Bendeck. ¿Qué es un sistema de control de versiones?. Almacenamiento de los elementos que debe gestionar Posibilidad de realizar cambios sobre ellos - PowerPoint PPT Presentation

Transcript of Control de Versiones

Page 1: Control de Versiones

CONTROL DE VERSIONESIngeniería de Software

Andrés Salinas Bendeck

Page 2: Control de Versiones

¿QUÉ ES UN SISTEMA DE CONTROL DE VERSIONES? Almacenamiento de los elementos que debe gestionar

Posibilidad de realizar cambios sobre ellos

Registro histórico de los cambios realizados, tanto del conjunto como del elemento en particular

Page 3: Control de Versiones

CLASIFICACIÓN DE LOS SISTEMAS

Centralizados CVS – SVN

Distribuidos Git - Mercurial

Page 4: Control de Versiones

FUNCIONAMIENTO

Independiente su clasificación, todos se basan en repositorios.

¿Qué es un repositorio? El conjunto de información gestionada por el sistema

Cada usuario/desarrollador puede crearse una copia local del repositorio. Repositorios exclusivos Repositorios colaborativos

Page 5: Control de Versiones

FUNCIONAMIENTO

Pasos básicos:1. Checkout (o Update)

2. Modificación del archivo(s)

3. Commit

En casos que dos usuarios modifiquen el mismo archivo, se debe hacer merge entre ellos (de forma manual o automática)

Page 6: Control de Versiones

CONCURRENT VERSIONS SYSTEM (CVS) Desarrollado por GNU Utiliza estructura cliente-servidor Existen clientes para la mayoría de las plataformas

TortoiseCVS es uno de los más utilizados a nivel de Windows

Tiene una serie de limitaciones: Los archivos en el repositorio no pueden ser renombrados Los directorios no pueden ser eliminados o renombrados

Page 7: Control de Versiones

SUBVERSION (SVN)

Nació como el reemplazo de CVS, enfocándose en sus falencias.

Ventajas: Se sigue la historia de los archivos a través de copias y renombrados. Las modificaciones son atómicas Es más eficiente (v/s CVS) en la creación de branches y tags (O(1) v/s O(n)) Solamente se envían las diferencias hacia ambos lados (CVS envía todo) Puede ser servido a través de Apache

Faltas: El soporte de renombramiento aun no es completo Problemas de parches entre branches

TortoiseSVN es el software más común en Windows

Page 8: Control de Versiones

¿QUIÉNES LO OCUPAN?

Apache KDE GNOME Google Code Leadsius GCC Python Mono SourceForge.net

Page 9: Control de Versiones

MERCURIAL

Utiliza la estructura de un sistema distribuido Ofrece gran rendimiento y escalabilidad sin un servidor, principal

meta del proyecto Mercurial

Utiliza un protocolo basado en HTTP para acceder a los archivos

Cada usuario trabaja por su cuenta, para después realizar merge de los cambios

Page 10: Control de Versiones

¿QUIÉNES LO USAN?

Python OpenOffice.org GNU Octave Mozilla Netbeans Option OpenSolaris Btrfs (Oracle)

Page 11: Control de Versiones

GIT

Desarrollado por Linus Torvalds para ser utilizado en el desarrollo del kernel de Linux «Take CVS as an example of what not to do; if in doubt, make the exact

opposite decision” – Linus Torvalds

Estructura similar a Mercurial, sin un servidor central (Distribuido) Busca ser muy seguro frente a todo tipo de eventos (accidentes,

corrupción o software malicioso) Otros de los objetivos del proyecto es ser extremadamente

eficiente. Utilizado principalmente en linux, pero existe un port para

Windows (msysgit) Uno de los más usados en el mundo OpenSource

Page 12: Control de Versiones

¿QUIÉNES LO USAN?

Amarok Android Arch Linux Cake PHP Debian Digg Fedora Ffmpeg GIMPO jQuery

Linux kernel Maemo OLPC openSUSE Perl phpBB Ruby on Rails Sugar Wine x264