Saltar a contenido

Estructuras de los sistemas de control de versiones

Los sistemas de control de versiones pueden organizarse según cómo se hospedan y gestionan los repositorios.
Existen tres tipos principales: locales, centralizados y distribuidos.

VCS Local

VCS Local

Un método básico de control de versiones es simplemente copiar archivos a otro directorio (a veces con fecha y hora).
Este método es muy sencillo, pero propenso a errores (sobrescribir archivos, perder cambios, confundir directorios).

Para mejorar esto, se desarrollaron los VCS locales, que usan una base de datos interna para registrar los cambios.

Historia...

Una de las herramientas más populares fue RCS.
- Guarda los cambios como “parches” (diferencias entre archivos).
- Puede reconstruir un archivo en cualquier momento a partir de esos parches.
- Aún está disponible en sistemas como Mac OS X mediante el comando rcs.

CVCS

VCS Centralizados (CVCS)

Los sistemas centralizados surgen para permitir la colaboración entre varias personas en un mismo proyecto.
Tienen un único servidor central que almacena todos los archivos versionados, y los clientes descargan de él.

Ejemplos

  • CVS
  • Subversion (SVN)
  • Perforce

Ventajas

  • Todos saben en qué trabajan los demás.
  • Control detallado de permisos de usuario.
  • Administración más sencilla que con VCS locales.

Desventajas

  • Punto único de fallo: si el servidor central falla, nadie puede trabajar.
  • Si se corrompe el disco duro del servidor sin copias de seguridad, se pierde todo el proyecto.

DVCS

VCS Distribuidos (DVCS)

Los sistemas distribuidos solucionan las limitaciones de los centralizados.
Cada cliente tiene una copia completa del repositorio (no solo los archivos más recientes).
Esto significa que si el servidor falla, el proyecto puede restaurarse desde cualquier copia.

Ejemplos

  • Git
  • Mercurial
  • Bazaar
  • Darcs

Ventajas

  • Cada clon es un repositorio completo con toda la historia del proyecto.
  • Se pueden manejar varios repositorios remotos.
  • Posibilidad de colaborar en distintos flujos de trabajo (por ejemplo, jerárquicos o en equipos separados).

Actividad

  • AC 201 (RA4 / CE4f / IC1 /1p) Imagina que formas parte de un equipo de desarrollo de software en una empresa. Tu tarea es explicar y representar gráficamente cómo funcionaría el trabajo en equipo utilizando tres tipos de sistemas de control de versiones. El entregable puede ser desde una presentación a un documento o a imágenes.