310 likes | 647 Views
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
E N D
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 • 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: • Checkout (o Update) • Modificación del archivo(s) • Commit • En casos que dos usuarios modifiquen el mismo archivo, se debe hacer merge entre ellos (de forma manual o automática)
Concurrentversionssystem (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 LinusTorvalds 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 onRails • Sugar • Wine • x264