Diferencias entre SVN y GIT en relación al repositorio central y las copias de seguridad
En un SVC centralizados como Subversion sólo el repositorio central tiene el historial completo. Esto significa que los usuarios deben comunicarse a través de la red con el repositorio central para obtener el historial acerca de un archivo.
Las copias de seguridad con Subversion se debe mantener con independencia de las VCS. Si el repositorio central se pierde debido a un fallo del sistema debe ser restaurado a partir de copia de seguridad realizada manualmente y los cambios desde última copia de seguridad es probable que se pierdan.
Diferencias entre SVN y GIT en relación a los commits locales
Por tanto mientras que en Subversión realiza las operaciones en el servidor ya que por ejemplo cada vez que hacemos un commit se realiza directamente en el servidor, con Git podemos hacer commit locales y posteriormente lanzar los cambios al servidor.
Algo desfavorable en cuanto a Subversion es que si no se puede acceder al repositorio ya que por ejemplo no se dispone de internet o el servidor estuviera caído no podríamos hacer commit. Si quisiéramos hacer una copia del código tendríamos literalmente que copiar y pegar.
Con Git la copia local en sí es un repositorio y se puede usar con todas la características y beneficios del control de código fuente. Al recuperar la conectividad con el repositorio principal si estuviese indisponible podemos subir los cambios al servidor.
Git es extremadamente rápido. Dado que todas las operaciones (excepto para hacer push y fetch) son locales y no hay necesidad del uso de la red al:
Confirmar los cambios, realizar un diff, combinar ramas, ver el historial de archivos , obtener cualquier otra revisión de un archivo, etc
Resumen de las diferencias entre SVN y GIT
- Git es mucho más rápido que Subversion
- Subversion le permite ver sólo un subárbol de un repositorio; Git necesita clonar el repositorio completo (incluyendo el historial) y crear una copia de trabajo que refleje al menos un subconjunto de los elementos que están bajo control de versiones.
- Los repositorios Git son mucho más pequeños que Subversiones. SVN requiere 30 veces más el espacio en disco para almacenar el mismo historial.
- Git fue diseñado para ser totalmente distribuida desde el principio, lo que permite que cada desarrollador tenga pleno control local.
- Las ramas (branches) Git son más simples y menos pesados que Subversion
- Las ramas (branches) Git llevan toda su historia completa
- La fusión (merge) en Git no obliga a recordar que la revisión que se fusionaron a partir de (este beneficio se evita con el lanzamiento de Subversion 1.5)
- Git proporciona una mejor auditoría de eventos de ramificación (branch) y fusión (merge)
- Los formatos de archivo de los repositorios de Git son simples, por lo que la reparación es fácil y la corrupción es rara.
- La copia de seguridad de los repositorios centrales de Subversion es potencialmente más simple
- El clonado de repositorios Git actua como repositorio de copias de seguridad completas
- Interfaz de usuario de Subversion es más maduro que Git. Actualmente Subversion tiene una gama más amplia de GUI’s que Git. Por ejemplo, hay plugins disponibles de SVN para los IDEs más populares, pero si utilizas Netbeans o Eclipse vas a tener GUI’s para ambos sistemas.
- Navegando a través de las versiones es más simple en Subversion, ya que utiliza números de secuencia de revisión (1,2,3, ..); Git utiliza impredecibles códigos hash SHA-1.
- Navegando hacia atrás en Git es muy fácil usando la sitaxis “^”, pero no hay manera fácil de navegar hacia adelante.
- Dado que Subversion tiene un repositorio central único, es posible especificar leer y escribir los controles de acceso en un solo lugar y hacer que se respete efectivamente en la totalidad del proyecto.
- Con Subversion se puede extraer un subdirectorio de un repositorio. Esto no es posible con Git. Por lo que para un proyecto grande, esto significa tener siempre que descargar el repositorio completo.
- SVN tiene la ventaja de que es mucho más fácil de aprender mientras que Git es más difícil de aprender porque tiene más conceptos y órdenes.
¿Te gustó este artículo?
Si te gustó este artículo, te ha servido o aprendiste algo nuevo; compártelo en tus redes sociales o invítame un cafe.