Te explicamos la Diferencia entre Git y Subversion con ejemplos y definiciones. Conoce todos los datos para distinguirlos fácilmente.

¿Cuál es la Diferencia entre Git y Subversion?
¿Qué es Git?
Creado inicialmente para el desarrollo del núcleo Linux por Linus Torvalds utilizando un DVCS propietario llamado BitKeeper, Git ha marcado el comienzo de un nuevo nivel de codificación colaborativa entre la comunidad de desarrolladores. Git es una de las herramientas más populares, utilizada en casi miles de proyectos y adoptada por millones de desarrolladores de todo el mundo. Se trata de un sistema de control de versiones distribuido diseñado para controlar los cambios en el código fuente a lo largo del tiempo mediante el mantenimiento de un tipo especial de base de datos denominada repositorio local, que es un clon exacto del repositorio central y permite a los usuarios almacenar tanto el historial de versiones actuales como el de versiones anteriores de los archivos en sus máquinas locales. La principal ventaja de Git es que no depende del acceso a la red para sus operaciones, lo que garantiza la integridad del contenido.
¿Qué es la subversión?
Subversion, o SVN, es un sistema de control de versiones gratuito y de código abierto utilizado para gestionar y almacenar archivos, y los cambios realizados en ellos a lo largo del tiempo en un servidor centralizado. Se distribuye bajo la licencia de Apache como código abierto. Fundado por CollabNet en 2000, SVN existe desde hace más de una década y sigue disfrutando de una amplia adopción como herramienta VCS de éxito tanto en la comunidad de código abierto como en el ecosistema corporativo. A diferencia de Git, SVN almacena los historiales de versiones de los archivos en un servidor centralizado. Crea ramas dentro del repositorio central planteadas como directorios. Cuando un usuario quiere hacer cambios en el código, lo hace desde sus propias máquinas y, cuando ha terminado, empuja el código de vuelta al repositorio central.
Diferencia entre Git y Subversion
Conceptos básicos de Git y Subversion
Aunque ambos son los dos sistemas de control de versiones de código abierto más populares, utilizados para controlar los cambios en el código fuente a lo largo del tiempo, son muy diferentes entre sí. Git es un sistema de control de versiones distribuido que utiliza un sistema distribuido para catalogar todas las versiones de un archivo de proyecto. Subversion (svn), por su parte, es un sistema centralizado de control de versiones y revisiones distribuido bajo licencia de código abierto.
Repositorio de Git y Subversion
Git es un sistema de control de versiones distribuido, lo que significa que, en lugar de utilizar un servidor centralizado para almacenar y gestionar el código fuente, crea un repositorio local que no es más que el clon del repositorio central que permite a los desarrolladores realizar cambios en todo el conjunto de forma local. El repositorio local consta de todo, desde historiales de versiones hasta ramas y metadatos, todo. Por otro lado, cuando los desarrolladores hacen commit en subversion, envían todos los cambios al repositorio central.
Distribución de Git y Subversion
Cuando los usuarios consultan un repositorio en Git, obtienen un clon completo del mismo que se almacena en sus máquinas locales. Tienen que «empujar» los cambios realizados en el código para compartirlo con otros usuarios, o «tirar» para sincronizarlo con un repositorio remoto. Esto facilita la colaboración entre varios usuarios sin perturbar el repositorio central. En subversion, todos los usuarios comparten el mismo repositorio central mediante ramificación.
Fiabilidad en red de Git y Subversion
Git es el menos dependiente del acceso a la red, ya que la mayoría de sus operaciones están disponibles sin conexión. Los usuarios pueden hacer merge, rebase y branching sin preocuparse del acceso a la red. Sin embargo, la red solo es necesaria cuando los usuarios necesitan sincronizar su repositorio local con el repositorio central. Subversion, por otro lado, requiere acceso a la red para la mayoría de sus operaciones porque no tiene un repositorio local para almacenar los cambios localmente.
Integridad del contenido de Git y Subversion
Todo en Git se comprueba criptográficamente mediante el algoritmo hash SHA-1 antes de ser almacenado, lo que garantiza la robustez del contenido del código. Esto hace virtualmente imposible cambiar el contenido del código sin que Git lo sepa. Subversion, por el contrario, no tiene contenidos hash, lo que significa que no garantiza la integridad del contenido en caso de fallo de la red o del disco. Git es sin duda la mejor alternativa cuando se trata de la integridad del contenido.
Git frente a Subversion: Cuadro comparativo
Resumen de Git frente a Subversion
Git es, sin duda, uno de los sistemas de control de versiones más populares y utilizados que existen, diseñado específicamente para gestionar desde pequeños a grandes proyectos. Es un sistema de control de versiones distribuido de código abierto que se utiliza para almacenar y mantener los cambios en el código fuente a lo largo del tiempo en un repositorio local que no es más que el clon del repositorio central. SVN también es un sistema de control de versiones que se utiliza básicamente para lo mismo, con la excepción de cómo almacenan las cosas. A diferencia de Git, SVN utiliza un servidor centralizado para mantener las versiones actuales y anteriores de archivos como código fuente, documentación, páginas web, etc. Una gran ventaja que tiene Git sobre SVN es que los usuarios de Git pueden tener el control de versiones sin ni siquiera preocuparse por el acceso a la red, lo que es muy poco probable en SVN.
