Comparativa - aaron-at97/WikiDesplegada GitHub Wiki

Git vs SVN

SVN y Git, si bien son ambos sistemas de control de versiones, tienen una diferencia bastante significante. SVN es un sistema de control de versiones centralizado (CVCS, Centralized Version Control System), mientras que Git es un sistema de control de versiones distribuido (DVCS, Distributed Version Control System).

Aunque muchos usuarios se preguntan cuál de los dos programas de control de versiones es mejor, no existe una respuesta general. La elección del sistema de control de versiones más adecuado para uno u otro proyecto dependerá de tus objetivos específicos. Ambos sistemas difieren en su estructura y en el proceso de trabajo resultante. La siguiente tabla resume sus principales diferencias:

SVN Git
Control de versiones Centralizada Distribuida
Repositorio Un repositorio central donde se generan copias de trabajo Copias locales del repositorio en las que se trabaja directamente
Autorización de acceso Dependiendo de la ruta de acceso Para la totalidad del directorio
Seguimiento de cambios Basado en archivos Basado en contenido
Historial de cambios Solo en el repositorio completo, las copias de trabajo incluyen únicamente la versión más reciente Tanto el repositorio como las copias de trabajo individuales incluyen el historial completo
Conectividad de red Con cada acceso Solo necesario para la sincronización
  • ¿CUÁL ES LA DIFERENCIA ENTRE DVCS Y CVCS?

Un sistema de control de versiones centralizado opera con la idea de que hay una sola copia del proyecto a la cual los desarrolladores realizar el commit de los cambios, y un solo lugar en el cual todas las versiones de un proyecto se encuentran guardadas.

Un sistema de control de versiones distribuido, por otro lado, trabaja con el principio de que cada desarrollador «clona» el repositorio del proyecto al disco duro de su dispositivo.

Una copia del proyecto es guardado en cada maquina local, y los cambios deben ser subidos (pushed) y bajados (pulled) hacia y desde el repositorio online para actualizar la versión que cada desarrollador tiene en su maquina local.

Como vemos, si bien funcionan de forma similar, ambos cuentan con una gran diferencia, que según lo que necesites o la forma en la que trabajes, puede que necesites un sistema distribuido o centralizado.

Situaciones en las que cada uno podría ser el más apropiado

  • Debes decantarte por Git, cuando:
  • no quieres depender de una conexión de red permanente, pues quieres trabajar en tu proyecto desde cualquier lugar.
  • quieres seguridad en caso de fallo o pérdida de los repositorios principales. -no necesitas contar con permisos especiales de lectura y escritura para los diferentes directorios (aunque, de ser así, será posible y complejo implementarlo).
  • la transmisión rápida de los cambios es una de tus prioridades.
  • SVN será la opción indicada, si:
  • necesitas permisos de acceso basados en rutas de acceso para las diferentes áreas de tu proyecto.
  • deseas agrupar todo tu trabajo en un solo lugar.
  • trabajas con numerosos archivos binarios de gran tamaño.
  • también quieres guardar la estructura de los directorios vacíos (estos son rechazados por Git, debido a que no contienen ningún tipo de contenido).
  • Según algunos indicadores técnicos y de software libre: tamaño de la comunidad, fragua y herramientas utilizadas, lenguaje de programación, modelo de negocio, etc.