1. Sistemas de Control de Versiones
Angel Argueta
Cristian Espinoza
David Sevilla
2. Una versin, revisin o edicin de un producto, es el estado en
el que se encuentra dicho producto en un momento dado de su
desarrollo o modificacin.
Se llama control de versiones a la gestin de los diversos cambios
que se realizan sobre los elementos de algn producto o una
configuracin del mismo.
El control de versiones se realiza principalmente en la industria
informtica para controlar las distintas versiones del cdigo
fuente.
3. Clasificacion
Centralizados: existe un repositorio centralizado de todo el cdigo,
del cual es responsable un nico usuario (o conjunto de ellos). Se
facilitan las tareas administrativas a cambio de reducir
flexibilidad, pues todas las decisiones fuertes (como crear una
nueva rama) necesitan la aprobacin del responsable. Algunos
ejemplos son CVS y Subversion.
Distribuidos: cada usuario tiene su propio repositorio. No es
necesario tomar decisiones centralizadamente. Los distintos
repositorios pueden intercambiar y mezclar revisiones entre ellos.
Ejemplos: Git y Mercurial
4. VOcabulario
Repositorio: El repositorio es el lugar en el que se almacenan los
datos actualizados e histricos, a menudo en un servidor. A veces se
le denomina depsito.
Rotular ("tag"): Darle a alguna versin de cada uno de los ficheros
del mdulo en desarrollo en un momento preciso un nombre comn
("etiqueta" o "rtulo") para asegurarse de reencontrar ese estado de
desarrollo posteriormente bajo ese nombre.
5. Vocabulario (cont.)
Revisin ("versin"): Una revisin es una versin determinada de un
archivo.
Abrir rama ("branch") o ramificar: Un mdulo puede ser branched o
bifurcado en un momento de tiempo de forma que, desde ese momento
en adelante, dos copias de esos ficheros puedan ser desarrolladas a
diferentes velocidades o de diferentes formas, de modo
independiente. El mdulo tiene entonces 2 (o ms) "ramas".
6. Vocabulario (cont.)
Integracin o fusin ("merge"): Una integracin o fusin une dos
conjuntos de cambios sobre un fichero o un conjunto de ficheros en
una revisin unificada de dicho fichero o ficheros.
Esto puede suceder cuando un usuario, trabajando en esos ficheros,
actualiza su copia local con los cambios realizados, y aadidos al
repositorio, por otros usuarios. Anlogamente, este mismo proceso
puede ocurrir en el repositorio cuando un usuario intenta check-in
sus cambios.
Puede suceder despus de que el cdigo haya sido branched, y un
problema anterior al branching sea arreglado en una rama, y se
necesite incorporar dicho arreglo en la otra.
Puede suceder despus de que los ficheros hayan sido branched,
desarrollados de forma independiente por un tiempo, y que entonces
se haya requerido que fueran fundidos de nuevo en un nico trunk
unificado.
7. Git
El desarrollo de Git comenz luego que muchos desarrolladores del
kernel de Linux decidieron dejar de utilizar el sistema
BitKeeper.
Git fue diseado por Linus Torvalds pensando en la eficiencia y la
confiabilidad del mantenimiento de versiones de aplicaciones cuando
estas tienen un gran numero de archivos de cdigo fuente.
8. criterios de diseo que utilizo Torvalds:
Tomar CVS como un ejemplo de que no hacer!
Soportar un flujo de trabajo distribuido como BitKeeper
Proteccin muy fuerte contra corrupcin de los datos
Alto desempeo
9. caracteristicas
Fuerte apoyo al desarrollo no-lineal, por ende rapidez en la gestin
de ramificaciones y mezclado de diferentes versiones.
Gestin distribuida.
Los almacenes de informacin pueden publicarse por HTTP, FTP, rsync
o mediante un protocolo nativo, ya sea a travs de una conexin
TCP/IP simple o a travs de cifrado SSH.
Gestin eficiente de proyectos grandes, dada la rapidez de gestin de
diferencias entre archivos, entre otras mejoras de optimizacin de
velocidad de ejecucin.
10. Todas las versiones previas a un cambio determinado,
implican la notificacin de un cambio posterior en cualquiera de
ellas a ese cambio (denominado autenticacin criptogrfica de
historial).
11. Proyectos que utilizan git
Android
Debian
Fedora
Eclipse
CakePHP
GNOME
OpenSUSE
PostgreSQL
Ruby on Rails
Samba
VLC
12. GitHub
Es un servicio de hospedaje web para proyectos que utilizan el
sistema de control de versiones Git. GitHub ofrece tanto planes
comerciales como planes gratuitos para proyectos de cdigo
abierto.