La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

MANEJADORES DE CONTROL DE VERSIONES

Presentaciones similares


Presentación del tema: "MANEJADORES DE CONTROL DE VERSIONES"— Transcripción de la presentación:

1 MANEJADORES DE CONTROL DE VERSIONES
Universidad Simón Bolívar Sistemas de Operación II (CI-4821) Abril-Julio 2013 MANEJADORES DE CONTROL DE VERSIONES Carlos Gómez Pedro Romero

2 Temas: Sistema de control de versiones (SCV) Definición
Conceptos Básicos Evolución Características Clasificación CVS, Subversion GIT

3 SCV / Definición 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 específicas 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 código o documento. Anotación: Adjuntar información relevante de los cambios realizados.

4 SCV / Conceptos Básicos
Repositorio: lugar en el que se almacenan los datos actualizados e históricos de cambios (sistema de archivos en un disco duro, un banco de datos, etc). Revisión: Versión determinada de la información que se gestiona. Tags: Permiten identificar de forma fácil revisiones importantes en el proyecto. Módulo: Conjunto de directorios y/o archivos dentro del repositorio que pertenecen a un proyecto común. 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.

5 SCV / Conceptos Básicos
Baseline: Una revisión 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 revisión unificada. Conflicto: Sucede cuando dos o más personas intentan realizar diferentes cambios en la misma porción de código.

6 SCV / Conceptos Básicos
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.

7 SCV / Evolución

8 SCV / Características Un sistema de control de versiones debe proporcionar: Mecanismo de almacenamiento de los elementos que deba gestionar (ej. archivos de texto, imágenes, documentación...). Posibilidad de realizar cambios sobre los elementos almacenados (ej. modificaciones parciales, añadir, borrar, renombrar o mover elementos). Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del producto).

9 SCV / Clasificación Sistema de control de versiones locales:
Información acerca de cambios se mantiene en un repositorio local.

10 SCV / Clasificación Sistema de control de versiones centralizados:
Necesitan el uso de un servidor y repositorio central.

11 Sistema de control de versiones distribuidos:
SCV / Clasificación Sistema de control de versiones distribuidos:  Permiten el uso de múltiples repositorios, y sincronización entre ellos.

12 CVS, Subversion Historia CVS: CVS surge como evolución de RCS.
Paso de la primera generación a la segunda generación 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 podía trabajar en las noches.  Brian Berliner (1989 – 1990): - Introduce el concepto de ramificación al control de versiones en CVS.

13 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 había 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 tenía ya el nombre de “Subversion” en mente y también el diseño básico del repositorio de Subversion, en el que propone introducir el manejo de directorios al alcance de la herramienta.

14 CVS, Subversion Historia Subversion:
No querían abrir nuevos caminos en la metodología del control de versiones, sólo querían corregir CVS. Subversion incorporaría las características de CVS y preservaría el mismo modelo de desarrollo, pero sin duplicar los defectos obvios de CVS. Debía ser lo bastante similar para que cualquier usuario de CVS pudiera hacer el cambio con poco esfuerzo.

15 CVS, Subversion Características 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 través del tiempo. Ambos, ficheros y directorios, se encuentran bajo el control de versiones.

16 CVS, Subversion Características CVS, Subversion:
La solución 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 personal—una réplica 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.

17 CVS, Subversion Características 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 añadir, borrar, copiar, y renombrar ficheros y directorios. Y cada fichero nuevo añadido comienza con un historial nuevo, limpio y completamente suyo.

18 CVS, Subversion Características CVS, Subversion: Envíos atómicos:
- Una colección 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 lógicos e impide que ocurran problemas cuando sólo una parte de los cambios enviados lo hace con éxito.

19 CVS, Subversion Características CVS, Subversion:
Elección de las capas de red: - Subversion tiene una noción abstracta del acceso al repositorio, facilitando a las personas implementar nuevos mecanismos de red. - Subversion puede conectarse al servidor HTTP Apache como un módulo de extensión. Esto proporciona a Subversion una gran ventaja en estabilidad e interoperabilidad, y acceso instantáneo a las características existentes que ofrece este servidor— autenticación, autorizawción, compresión de la conexión. - También tiene disponible un servidor independiente, y más ligero. Este servidor habla un protocolo propio, el cual puede ser encaminado fácilmente a través de un túnel SSH.

20 CVS, Subversion Características CVS, Subversion:
Manipulación consistente de datos: - Subversion expresa las diferencias del fichero usando un algoritmo de diferenciación binario, que funciona idénticamente con ficheros de texto y ficheros binarios (CVS no los manipula). - Ambos tipos de ficheros son almacenados igualmente en el repositorio. Ramificación y etiquetado eficientes: - El coste de ramificación y etiquetado en Subversion no necesita ser proporcional al tamaño 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 pequeña y constante.

21 CVS, Subversion Características CVS, Subversion: Hackability
- Subversion está implementado como una colección de bibliotecas compartidas en C con APIs bien definidas. - Esto hace a Subversion extremadamente fácil de mantener y reutilizable por otras aplicaciones y lenguajes.

22 GIT Historia GIT: Núcleo 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 núcleo de Linux empezó a usar un sistema de control de versiones propietario llamado BitKeeper. Inicios (2005): - La relación entre la comunidad que desarrollaba el núcleo de Linux y la compañía 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.

23 GIT Aspectos Fundamentales: Uso de instantáneas (snapshots):
Otros sistemas tienden a almacenar los datos como cambios de cada archivo respecto a una versión base.  Git almacena la información como instantáneas del proyecto a lo largo del tiempo.

24 GIT Casi cualquier operación 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 pérdida de información durante la transmisión. - El checksum es generado mediante el hash SHA-1 que consiste en una cadena de 40 caracteres hexadecimales. Por ejemplo: 24b9da aa493b52f8696cd6d3b00373

25 GIT Estados: - Committed: datos almacenados de forma segura en la base de datos local. - Modified: se ha modificado un archivo pero todavía no se ha confirmado en la base de datos local. - staged: se ha marcado un archivo modificado en su versión actual para que vaya en una próxima confirmación.

26 GIT

27 GIT Sistemas operativos:

28 GIT Funcionamiento interno directorio git: $ ls .git
HEAD: Apuntador al branch actual. branches/: no se utiliza actualmente. config: opciones de configuración 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.

29 GIT Usuarios:


Descargar ppt "MANEJADORES DE CONTROL DE VERSIONES"

Presentaciones similares


Anuncios Google