Control de Versiones
description
Transcript of Control de Versiones
CONTROL DE VERSIONESIngenierí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
Registro histórico de los cambios realizados, tanto del conjunto como del elemento en particular
CLASIFICACIÓN DE LOS SISTEMAS
Centralizados CVS – SVN
Distribuidos Git - Mercurial
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
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)
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
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
¿QUIÉNES LO OCUPAN?
Apache KDE GNOME Google Code Leadsius GCC Python Mono SourceForge.net
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
¿QUIÉNES LO USAN?
Python OpenOffice.org GNU Octave Mozilla Netbeans Option OpenSolaris Btrfs (Oracle)
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
¿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