Вы находитесь на странице: 1из 29

Universidad Simn Bolvar

Sistemas de Operacin II (CI-4821)


Abril-Julio 2013

MANEJADORES DE CONTROL DE VERSIONES

Carlos Gmez
Pedro Romero

Temas:
Sistema de control de versiones (SCV)
Definicin
Conceptos Bsicos
Evolucin
Caractersticas
Clasificacin
CVS, Subversion
GIT

SCV / Definicin
Es un sistema que registra los cambios realizados sobre un
archivo o conjunto de archivos a lo largo del tiempo, de modo que
se pueda recuperar versiones especficas de los mismos en un
determinado momento.
Un SVC posee tres capacidades importantes:
Reversibilidad: retornar a un estado anterior del
proyecto en caso de fallas.
Concurrencia: Muchas personas modificando el mismo
cdigo o documento.
Anotacin: Adjuntar informacin relevante de los
cambios realizados.

SCV / Conceptos Bsicos


Repositorio: lugar en el que se almacenan los datos
actualizados e histricos de cambios (sistema de
archivos en un disco duro, un banco de datos, etc).
Revisin: Versin determinada de la informacin que
se gestiona.
Tags: Permiten identificar de forma fcil revisiones
importantes en el proyecto.
Mdulo: Conjunto de directorios y/o archivos dentro
del repositorio que pertenecen a un proyecto comn.
Branch: Es una copia del proyecto aislada, de forma
que los cambios realizados no afecten al resto del
proyecto y vice versa, excepto cuando los cambios
sean "unidos" de un lado al otro.

SCV / Conceptos Bsicos

Baseline: Una revisin aprobada de un documento o


fichero fuente, a partir del cual se pueden realizar
cambios subsiguientes.

Checkout: crea una copia de trabajo local desde el


repositorio.

Commit: Consiste en realizar un cambio local en el


proyecto y luego almacenar dicho cambio en el
repositorio.

Merge: Une dos grupos de cambios en un archivo (o


grupo de archivos), generando una revisin unificada.

Conflicto: Sucede cuando dos o ms personas intentan


realizar diferentes cambios en la misma porcin de
cdigo.

SCV / Conceptos Bsicos

Update: Integra los cambios que han sido


realizados en el repositorio en la copia de trabajo
local.

Change set: Conjunto de cambios realizados en


un nico commit.

SCV / Evolucin

SCV / Caractersticas
Un sistema de control de versiones debe proporcionar:

Mecanismo de almacenamiento de los elementos que deba


gestionar
(ej.
archivos
de
texto,
imgenes,
documentacin...).

Posibilidad de realizar cambios sobre los elementos


almacenados (ej. modificaciones parciales, aadir, borrar,
renombrar o mover elementos).

Registro histrico de las acciones realizadas con cada


elemento o conjunto de elementos (normalmente pudiendo
volver o extraer un estado anterior del producto).

SCV / Clasificacin
Sistema de control de versiones locales:

Informacin acerca de cambios se


mantiene en un repositorio local.

SCV / Clasificacin
Sistema de control de versiones centralizados:

Necesitan el uso de un servidor y


repositorio central.

SCV / Clasificacin
Sistema de control de versiones distribuidos:

Permiten el uso de mltiples repositorios, y


sincronizacin entre ellos.

CVS, Subversion
Historia CVS:
CVS surge como evolucin de RCS.
Paso de la primera generacin a la segunda generacin de
manejadores.
Expandir el alcance de los manejadores de un simple archivo
a un conjuntos de archivos.
Dick Grune y dos alumnos(1984 y 1985):
- Uno era trabajador en el horario de 9 a 5.
- El otro era muy irregular en sus horas de trabajo.
- El profesor solo poda trabajar en las noches.
Brian Berliner (1989 1990):
- Introduce el concepto de ramificacin al control de
versiones en CVS.

CVS, Subversion
Historia Subversion:
CollabNet (2000):
- Busca reclutar un grupo de desarrolladores con intenciones
de sustituir al CVS.
- CVS para este momento es el manejador de control de
versiones por default.
- Lo mejor que haba en el momento.
- El que ya todos estaban familiarizados.
CollabNet logra contratar a:
- Karl Fogel, autor de Open Source Development with CVS.
- Jim Brandy, quien ya tena ya el nombre de Subversion en
mente y tambin el diseo bsico del repositorio de Subversion,
en el que propone introducir el manejo de directorios al alcance
de la herramienta.

CVS, Subversion
Historia Subversion:

No queran abrir nuevos caminos en la metodologa


del control de versiones, slo queran corregir CVS.

Subversion incorporara las caractersticas de CVS y


preservara el mismo modelo de desarrollo, pero sin
duplicar los defectos obvios de CVS.

Deba ser lo bastante similar para que cualquier


usuario de CVS pudiera hacer el cambio con poco
esfuerzo.

CVS, Subversion
Caractersticas CVS, Subversion:

Versionado de directorios.

- CVS solamente lleva el historial de ficheros


individuales.
- Subversion implementa un sistema de ficheros
versionado virtual que sigue los cambios sobre
rboles de directorios completos a travs del tiempo.
Ambos, ficheros y directorios, se encuentran bajo el
control de versiones.

CVS, Subversion
Caractersticas CVS, Subversion:
La solucin copiar-modificar-mezclar:
- Modelo del tipo copiar-modificar-mezclar como alternativa
al bloqueo. En este modelo, el cliente de cada usuario se
conecta al repositorio del proyecto y crea una copia de trabajo
personaluna rplica local de los archivos y directorios del
repositorio.
- El sistema de control de versiones a menudo ayuda con la
mezcla, pero en ltima instancia es un ser humano el
responsable de hacer que esto suceda correctamente.

CVS, Subversion
Caractersticas CVS, Subversion:
Verdadero historial de versiones:
- CVS est limitado al versionado de ficheros, operaciones
como copiar y renombrar no son soportadas.
- CVS no puede reemplazar un fichero versionado con algo
nuevo que lleve el mismo nombre sin que el nuevo elemento
herede el historial del fichero antiguo.
- Con Subversion, usted puede aadir, borrar, copiar, y
renombrar ficheros y directorios. Y cada fichero nuevo aadido
comienza con un historial nuevo, limpio y completamente suyo.

CVS, Subversion
Caractersticas CVS, Subversion:

Envos atmicos:

- Una coleccin cualquiera de modificaciones o bien


entra por completo al repositorio, o bien no lo hace en
absoluto Uso de transacciones.
- Esto permite a los desarrolladores construir y enviar
los cambios como fragmentos lgicos e impide que
ocurran problemas cuando slo una parte de los cambios
enviados lo hace con xito.

CVS, Subversion
Caractersticas CVS, Subversion:
Eleccin de las capas de red:
- Subversion tiene una nocin abstracta del acceso al
repositorio, facilitando a las personas implementar nuevos
mecanismos de red.
- Subversion puede conectarse al servidor HTTP Apache como
un mdulo de extensin. Esto proporciona a Subversion una gran
ventaja en estabilidad e interoperabilidad, y acceso instantneo a
las caractersticas existentes que ofrece este servidor
autenticacin, autorizawcin, compresin de la conexin.
- Tambin tiene disponible un servidor independiente, y ms
ligero. Este servidor habla un protocolo propio, el cual puede ser
encaminado fcilmente a travs de un tnel SSH.

CVS, Subversion
Caractersticas CVS, Subversion:
Manipulacin consistente de datos:
- Subversion expresa las diferencias del fichero usando un
algoritmo
de
diferenciacin
binario,
que
funciona
idnticamente con ficheros de texto y ficheros binarios (CVS
no los manipula).
- Ambos tipos de ficheros son almacenados igualmente en
el repositorio.
Ramificacin y etiquetado eficientes:
- El coste de ramificacin y etiquetado en Subversion no
necesita ser proporcional al tamao del proyecto.
- Crea ramas y etiquetas simplemente copiando el
proyecto, usando un mecanismo similar al enlace duro. De
este modo estas operaciones toman solamente una
cantidad de tiempo pequea y constante.

CVS, Subversion
Caractersticas CVS, Subversion:
Hackability
- Subversion est implementado como una
coleccin de bibliotecas compartidas en C con
APIs bien definidas.
- Esto hace a Subversion extremadamente
fcil de mantener y reutilizable por otras
aplicaciones y lenguajes.

GIT
Historia GIT:
Ncleo de Linux (1991):
- Durante el mantenimiento de este Software, los cambios realizados
se pasaron en forma de parches y archivos.
BitKeeper (2002):
- El proyecto del ncleo de Linux empez a usar un sistema de control
de versiones propietario llamado BitKeeper.
Inicios (2005):
- La relacin entre la comunidad que desarrollaba el ncleo de Linux y
la compaa que desarrollaba BitKeeper se vino abajo, y la herramienta
dej de ser gratuita.
- La comunidad de desarrollo de Linux crea una herramienta de
control de versiones inspirada en BitKeeper y Monotone.
- GIT est escrito en C, Bourne Shell y Perl.
- Software libre bajo la licencia GNU.

GIT
Aspectos Fundamentales:
Uso de instantneas (snapshots):

Otros sistemas tienden a almacenar los datos


como cambios de cada archivo respecto a
una versin base.

Git almacena la informacin como


instantneas del proyecto a lo largo del
tiempo.

GIT
Casi cualquier operacin es local.
Integridad:
- Todo es verificado mediante un checksum antes de ser
almacenado y todo es identificado a partir de ese momento
mediante dicha suma. Esto significa que es imposible cambiar los
contenidos de cualquier archivo o directorio sin que GIT lo sepa.
GIT detecta la prdida de informacin durante la transmisin.
- El checksum es generado mediante el hash SHA-1 que consiste
en una cadena de 40 caracteres hexadecimales. Por ejemplo:

24b9da6552252987aa493b52f8696cd6d3b00373

GIT

Estados:

- Committed: datos almacenados de forma segura en la


base de datos local.
- Modified: se ha modificado un archivo pero todava no
se ha confirmado en la base de datos local.
- staged: se ha marcado un archivo modificado en su
versin actual para que vaya en una prxima confirmacin.

GIT

GIT

Sistemas operativos:

GIT
Funcionamiento interno directorio git:
$
ls .git
HEAD: Apuntador al branch actual.
branches/: no se utiliza actualmente.
config: opciones de configuracin del proyecto.
description: archivo usado por GitWeb.
hooks/: contiene todos los scripts.
index: archivo donde se almacena el staging area.
info/: patrones a ignorar.
objects/: Almacena todo el contenido de la base de datos.
refs/: guarda los apuntadores a las confirmaciones de cambios.

GIT
Usuarios:

Вам также может понравиться