Sistemas para el Control de Versiones de C³digo

download Sistemas para el Control de Versiones de C³digo

of 46

  • date post

    12-Jun-2015
  • Category

    Technology

  • view

    9.100
  • download

    0

Embed Size (px)

description

Una introducción al uso de Sistemas de Control de Versiones (SCV) como parte de las "Buenas Prácticas de Programación". Se discuten los conceptos básicos, flujos de trabajo usuales, y al final, se muestran ejemplos de uso de Bazaar como SCV.

Transcript of Sistemas para el Control de Versiones de C³digo

  • 1. Buenas Prcticas de Programacin Sistemas para el Control de Versiones de Cdigo Jess M. Castagnetto M., Ph.D. jesus@upch.edu.pe - jmcastagnetto@php.net http://www.castagnetto.com/

2. Agenda

  • Qu es un Sistema de Control de Versiones? (SCV)
  • Conceptos principales en SCVs
  • Sistemas SCV ms usados
  • Bazaar, un SCV flexible y simple
  • Donde conseguir mas informacin

3. S istema deC ontrol deV ersiones

  • Permite el manejo de mltiples revisiones
  • Acta a niveles de archivo de cdigo, directorio, proyecto, etc.
  • Se encarga de identificar, comparar, revertir, etc., cambios en la informacin
  • Ayuda en el desarrollo paralelo de un proyecto, por mltiples programadores.

4. Qu puede controlar un SCV?

  • Archivos Los ms simples, controlan solamente archivos individuales.
  • rboles de archivos Los ms avanzados, pueden manejar directorios (y sub-directorios) con sus archivos asociados, incluyendo el concepto de proyecto.

5. Cmo puede trabajar un SCV?

  • Local Informacin acerca de cambios se mantiene en un repositorio local.
  • CentralizadoNecesitan el uso de un servidor y repositorio central.
  • Descentralizado Permiten el uso de mltiples repositorios, y sincronizacin entre ellos.

6. Evolucin de los SCV 7. Desarrollo de los SCV (1)

  • Primera Generacin
  • Control de archivos individuales.
  • Almacenamiento de local (en el mismo directorio) de revisiones.
  • Ejemplos: SCCS, RCS.

SCCS: http://en.wikipedia.org/wiki/Source_Code_Control_System RCS: http://en.wikipedia.org/wiki/Revision_Control_System 8. Desarrollo de los SCV (2)

  • Segunda Generacin
  • Control de rboles de archivos.
  • Almacenamiento centralizado de revisiones.
  • Manejo deficiente de algunas operaciones (ej. renombrado de archivos).
  • Ejemplo: CVS.

CVS: http://en.wikipedia.org/wiki/Concurrent_Versions_System 9. Desarrollo de los SCV (3)

  • Tercera Generacin
  • Control de rboles de archivos.
  • Almacenamiento centralizado de revisiones.
  • Manejo completo de operaciones complejas con archivos.
  • Ejemplo: Subversion.

SVN: http://en.wikipedia.org/wiki/Subversion_(software) 10. Desarrollo de los SCV (4)

  • Cuarta Generacin
  • Control de rboles de archivos.
  • Almacenamiento descentralizado de revisiones.
  • Manejo deficiente de algunos flujos de trabajo y consolidacin compleja.
  • Ejemplo: GNU arch.

GNU arch: http://en.wikipedia.org/wiki/GNU_arch 11. Desarrollo de los SCV (5)

  • Quinta Generacin
  • Control de rboles de archivos.
  • Almacenamiento descentralizado de revisiones.
  • Manejo de mltiples flujos de trabajo, inlcuyendo el centralizado.
  • Ejemplo: Bazaar.

Bazaar: http://bazaar-vcs.org/ 12. Conceptos bsicos de SCV 13. Revisin

  • Es una visin esttica en el tiempo, del estado de un grupo de archivos y directorios.
  • Tiene asociada metadata (fecha, identidad de quin hizo modificaciones, etc.)
  • Posee una etiqueta (nmero de revisin, etc.) que la identifica nicamente.

14. Copia de trabajo

  • Tambin llamado rbol de trabajo.
  • Es el conjunto de directorios y archivos manejados por el SCV, y que estn bajo edicin activa.
  • Est asociado a una rama de trabajo en particular.

15. Rama de trabajo (o desarollo)

  • En el caso mas simple, unaramaes un conjunto ordenado de revisiones.
  • La revisin ms reciente se denomina la cabeza (head) o principal (main).
  • Las ramas se pueden separar y juntar como se necesite, formando un grafo de revisin (que es un Grafo Acclico Directo, DAG).

16. Repositorio

  • Un sitio de almacenamiento de revisiones.
  • Puede estar estructurado internamente como un solo archivo, una coleccin de archivos, base de datos, etc.
  • Puede residir localmente (en el mismo sistema de archivos), o ser remoto (servidor o servidores).

17. Conflicto y Resolucin

  • Ocurre cuando dos personas han hecho cambios contradictorios en un mismo documento (o grupo de documentos).
  • Los SCVs slo alertan acerca de un conflicto, los humanos tienen que solucionarlo.
  • El proceso de resolver un conflicto es denominadoresolucin .

18. Cambio y Combinacin

  • Uncambio(tambin llamado diff o delta), es la modificacin en un archivo bajo control de revisiones.
  • Lacombinacin(o integracin), se produce al unir los cambios en un archivo (o grupo de archivos), generando una revisin unificada.

19. Parche

  • Tambin llamado Lista o Conjunto de cambios.
  • Es la lista de cambios generada al comparar revisiones, y que puede usarse para reproducir automticamente las modificaciones hechas en el cdigo.
  • Generalmente el resultado de cometer los cambios al repositorio.

20. Flujos de trabajo con SCVs 21. Trabajo en solitario

  • La forma mas simple de trabajo.
  • til para proyectos pequeos, o al inicio de uno que crecer paulatinamente.
  • Se puede usar tanto con SCVs centralizados como descentralizados.

22. Trabajo en pares

  • Usado en desarrollos desde pequeos a medianos.
  • Ideal para el mtodo de Programacin en pares (Pair Programming).
  • Requiere de un SCV descentralizado.

23. Repositorio centralizado

  • Cuando mltiples personas colaboran en un proyecto.
  • La informacin se sincroniza a travs del repositorio central, en un servidor dedicado.
  • Conexin de red es imprescindible para almacenar los cambios.

24. Repositorio centralizado con opcin local

  • Similar al flujo centralizado.
  • Se pueden hacer y almacenar cambios localmente.
  • Los cambios, luego se envan al repositorio central.
  • Algunos SCVs descentralizados pueden trabajar de esta forma.

25. Trabajo distribuidocon una lnea principal

  • Cada desarrollador tiene su propia rama (o ramas) de trabajo independiente.
  • Adems, todos tienen autorizacin para poder enviar cambios a la rama principal.

26. Trabajo distribuido con supervisin humana

  • Parecido al flujo anterior, pero:
    • Todos pueden leer de la rama principal.
    • Slo una persona puede registrar cambios en la rama principal.
    • Otros desarrolladores combinan cambios con esta persona.
    • Permite tener varias lineas principales en paralelo: estable, desarrollo, etc.

27. Trabajo distribuido con supervisin automtica

  • Como el flujo anterior, pero usando software en lugar de una persona.
  • Usar reglas de seleccin, aceptacin y combinacin.
  • El sistema de control puede estar en un servidor separado (ej. PQM)

28. Sistemas de Control de Versiones ms conocidos y usados 29. CVS

  • C oncurrentV ersioningS ystem
    • Desarrollado en los 80s por Dick Grune.
    • Popular en lo 90s con proyectos de Cdigo Libre.
  • Usan un repositorio centralizado.
  • Se puede usar en flujos de trabajo en solitario, o centralizados.
  • Tiene problemas con algunas operaciones en archivos (ej. renombrar, mover)

30. SVN

  • Subversion
    • Desarrollado desde el 2000 por CollabNet, Inc.
    • Creado para reemplazar y mejorar CVS.
  • Usa un repositorio central para almacenar cambios.
  • Se ha integrado a IDEs, y existen interfaces grficas para mltiples SO.
  • Muchos proyectos han migrado de CVS a SVN exitsamente.

31. Git

  • Es en realidad una serie de herramientas relacionadas: Cogio, StGIT, etc.
    • Creado por Linus Torvalds en el 2005.
    • Usado principalmente en el Kernel de Linux.
  • Usa repositorios descentralizados.
  • Algunos proyectos de Cdigo Libre estn adoptando su uso en reemplazo de CVS o SVN.

32. Darcs

  • Sistema distribuido e interactivo, que permite la creacin espontnea de ramas de desarrollo.
  • Creado por David Roundy (fsico), basado en un teora propia acerca del lgebra de parches
  • Para ms detalles acerca de la teora ver: http://www.darcs.net/manual/node8.html

33. Bazaar

  • Basado en sistemas como GNU arch y tla.
  • Desarrollado por Robert Collins (Canonical), y su equipo desde el 2005.
  • Usado en el manejo de proyectos en Canonical, Ubuntu (y derivados), etc.
  • Permite mltiples diferentes flujos de trabajo, incluyendo la