HDP115

Tipos de control de versiones

Tipos de control de versiones

CE

Cristian Escalante

Última actualización: 19 de abril de 2025

git
control de versiones
desarrollo

Tipos de control de versiones

Existen dos tipos de sistemas de control de versiones: los sistemas centralizados y los sistemas distribuidos

Sistema de Control de Versiones Centalizado

Un Sistema de Control de Versiones Centralizados por sus siglas en ingles (CVCS), exisite un servidor central que almacena todo el historial del proyecto. Los desarrolladores descargan (checkout) y envían (commit) cambios directamente a este repositorio principal.

graph TD A[Computer A] -->|Checkout/Commit| C[Central VCS Server] B[Computer B] -->|Checkout/Commit| C C -->|Version 3| A C -->|Version 3| B C[("Central VCS Server Version Database ▼ Version 3 Version 2 Version 1")]

Características

  • Un único repositorio central (todos dependen de él).
  • Bloqueo de archivos (evita conflictos al editar).
  • Fácil de administrar para equipos pequeños.

Ejemplos de CVCS

  • Subversion (SVN) → Muy usado en empresas tradicionales.
  • Concurrent Versions System (CVS) → Uno de los primeros.
  • Perforce → Popular en desarrollo de videojuegos.

Ventajas

  • Funciona bien con archivos binarios (imágenes, documentos).
  • Visibilidad completa del estado del proyecto.
  • Curva de aprendizaje baja (ideal para principiantes).

Desventajas

  • Dependencia del servidor (si falla, no se puede trabajar).
  • Más lento (cada operación requiere conexión al servidor).
  • Conflictos al trabajar en equipo (requiere mucha coordinación).

Sistema de Control de Versiondes Distribuido

En un DVCS, cada desarrollador tiene una copia completa del repositorio en su máquina, incluyendo todo el historial. Esto permite trabajar sin conexión y fusionar cambios más fácilmente.

graph TD A[("Computer A Local Repository ▼ Version 3 Version 2 Version 1")] -->|Push/Pull| R[Remote Server] B[("Computer B Local Repository ▼ Version 3 Version 2 Version 1")] -->|Push/Pull| R R[("Remote Server (GitHub/GitLab) ▼ Version 3 Version 2 Version 1")]

Características

  • Cada usuario tiene un repositorio local (independiente del servidor).
  • Operaciones rápidas (no siempre se necesita internet).
  • Ramas flexibles (ideal para equipos grandes).

Ejemplos de DVCS

Git → El más popular (usado en GitHub, GitLab).

Mercurial → Alternativa sencilla a Git. Bazaar → Menos común, pero flexible.

Ventajas

  • Trabajo sin conexión (puedes hacer commits locales).
  • Copias de seguridad automáticas (cada clon es un respaldo).
  • Ramas y fusiones más eficientes (menos conflictos).

Desventajas

  • Mayor consumo de espacio (todo el historial se descarga).
  • Curva de aprendizaje más alta (comandos complejos).
  • Requiere más disciplina (gestión de ramas avanzada).

Comparación entre un Sistema Control de Versiones Centralizado de uno Distribuido

AspectoCentralizado (SVN, CVS)Distribuido (Git, Mercurial)
Dependencia del servidorAlta (sin servidor, no hay trabajo)Baja (trabajo offline posible)
VelocidadMás lento (consulta constante al servidor)Más rápido (operaciones locales)
SeguridadRiesgo de perder todo si el servidor fallaCada clon es una copia de seguridad
Uso en equipos grandesMenos eficiente (muchos conflictos)Ideal (ramas independientes)
¿Porqué es importante en el Desarrollo de Software?
Saber usar un control de versiones facilita el trabajo en eq...
Comparacion entre SVN y GIT
Comparacion entre SVN y GIT
Referencias
Gitlab. ¿Qué es un sistema de control de versiones centralizado?. https://about.gitlab.com/es/topics/version-control/what-is-centralized-version-control-system/
Digital Products. Centralized Version Control System Examples. https://www.digitalproductsdp.com/blog/centralized-version-control-systems
We Learn Data. Version Control What it is, types, and best tools. https://welearndata.com/git/control-de-versiones-que-es-tipos-herramientas/

Conceptos Básicos de HTML

Aprende los conceptos básicos de HTML

Conceptos Básicos de CSS

Aprende los conceptos básicos de CSS

Conceptos Básicos de JavaScript

Aprende los conceptos básicos de JavaScript

Conceptos Básicos SQL

Aprende los conceptos básicos de SQL

Conceptos Básicos de Python

Aprende los conceptos básicos de Python

Conceptos Básicos de UML

Aprende los conceptos básicos de UML

Refuerzo Academico de Herramientas de Productividad 2025