Академический Документы
Профессиональный Документы
Культура Документы
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 / Evolucin
SCV / Caractersticas
Un sistema de control de versiones debe proporcionar:
SCV / Clasificacin
Sistema de control de versiones locales:
SCV / Clasificacin
Sistema de control de versiones centralizados:
SCV / Clasificacin
Sistema de control de versiones distribuidos:
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:
CVS, Subversion
Caractersticas CVS, Subversion:
Versionado de directorios.
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:
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):
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:
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: