martes, 22 de julio de 2014

¿Cuales son las herramientas que podemos utilizar para el control de versiones?




   ¿Cuales son las herramientas que podemos utilizar para el control de versiones?

Los programas para control de versiones son un grupo de aplicaciones originalmente ideadas para gestionar ágilmente los cambios en el código fuente de los programas y poder revertirlos.
En sus orígenes y antes de la aparición de las redes, todos los desarrolladores usaban el mismo ordenador. La gestión de versiones estaba orientada a ficheros individuales, que generalmente eran absorbidos o reemplazados por otros ficheros:
  •          Revision Control System (RCS) — almacena la última versión y las diferencias con la anterior, lo que permiten acceder rápidamente a la versión original.
  •          Source Code Control System (SCCS) — formó parte de UNIX; está basado en diferencias entrelazadas, que permiten construir versiones como un conjunto de subrevisiones.
 Vamos a diferenciar dos modelos aportando algunas características:

  •         Modelo cliente-servidor: Con la llegada de las redes, los desarrolladores usan un repositorio central al que acceden mediante un cliente en su máquina. Con el vuelco causado por las redes públicas (Usenet, UUCP, Internet...) distinguimos entre programas abiertos (código fuente disponible) y propietarios (comerciales):

o    Codigo abierto:
§  Concurrent Versions System (CVS) — basado originalmente en RCS, licenciado mediante GPL.
§  Subversion (svn) — inspirado en CVS.
§  Vesta — sistema de construcción con soporte para versionado de ficheros en repositorios distribuidos.
o    Codigo cerrado:
      • AccuRev – herramienta para gestión de la configuración de código fuente que integra un gestor de incidencias basado en flujos que maneja de forma eficiente desarrollo paralelo a escala global.
      • CA SCM – herramienta para gestión de cambios y configuración de Computers Asociates.
§  Autodesk Vault – herramienta de control de versiones diseñada específicamente para aplicaciones Autodesk que gestionan las relaciones complejas entre ficheros de diseño elaborados por AutoCAD y Autodesk Inventor.
§  ClearCase – sistema de gestión de configuración -compaltible con VSS- fabricado por Rational Software (IBM).
§  codeBeamer – plataforma colaborativa para la gestión del ciclo de vida de aplicaciones.
                             (Hay más por si os interesa estas son solo algunas)

  •      Modelo distribuido: En el modelo distribuido, cada desarrollador trabaja directamente con su repositorio local, y los cambios se comparten entre repositorios en un paso posterior:

o    Codigo abierto:
§  Aegis - escrito por Peter Miller, es un programa maduro, orientado a sistemas de ficheros, con soporte de red limitado.
§  ArX - escrito por Walter Landry, empezó como una rama de GNU arch, pero finalmente ha sido totalmente reescrito.
§  Bazaar - escrito en Python por Martin Pool y patrocinado por Canonical es un sistema descentralizado, que intenta ser rápido y fácil de usar.
§  Codeville - escrito en Python por Ross Cohen; usa un algoritmo de injerto innovador.
§  Git - escrito en una combinación de Perl, C y varios scripts de shell, estuvo diseñado por Linus Torvalds según las necesidades del proyecto del kernel de Linux; con los requisitos de descentralización, rápido, flexible y robusto.
§  Mercurial — escrito en Python como un recambio en software libre de Bitkeeper; descentralizado, que pretende ser rápido, ligero, portable y fácil de usar.
  (Hay más por si os interesa estas son solo algunas)
o    Codigo cerrado:
§  BitKeeper — usado en el desarrollo del Núcleo de Linux (2002 – Abril 2005).
§  Code Co-op — sistema de control de versiones P2P (puede sincronizar mediante e-mail).
§  Sun WorkShop TeamWare — retirado, reemplazado por BitKeeper.

§  Plastic SCM — desarrollado por la empresa española Codice Software,  trata de dar un mayor soporte al desarrollo paralelo, creación de ramas, integración (merge) de ramas, seguridad y desarrollo distribuido.

5 comentarios: