Git vs SVN: control de versiones centralizado y distribuido
Para obtener una visión general de los cambios realizados en documentos o archivos, existen los llamados controles de versión. Estos guardan todas las versiones generadas por un procesamiento, incluida la identificación de usuario y la marca de tiempo, en un archivo, de modo que los estados anteriores de los datos individuales puedan recuperarse o recuperarse. Para ello es posible ver qué usuarios han realizado cambios en un momento dado. Los objetivos pretendidos de un sistema de este tipo son coordinar el acceso común de diferentes usuarios a los archivos y permitir el desarrollo simultáneo de diferentes ramas (desarrollo de ramas y divisiones).
Los controles de versión en el desarrollo de software generalmente se usan para aplicaciones de oficina y CMS. Entre los programas más famosos para el control de versiones se encuentran Apache Subversion (SVN) y Git, que pueden instalarse en su servidor o solicitarse a un proveedor. El servicio de hospedaje más famoso para proyectos Git es GitHub , mientras que el hospedaje de Subversion lo ofrece, por ejemplo, RiouxSVN . En servicios como SourceForge es posible alojar ambos sistemas.
SVN: El sucesor de CVS diseñado por CollabNet
El software gratuito Subversion fue desarrollado a principios de la década de 2000 por CollabNet y casi cuatro años después se lanzó su primera versión. Por lo tanto, SVN fue el sucesor de CVS (Sistema de Versiones Concurrentes), ahora ya no implementado. En 2009, el proyecto pasó a la Apache Software Foundation, de ahí su nombre Apache Subversion.
SVN utiliza un sistema de control de gestión central. Esto significa que hay una carpeta (repositorio) a la que todos los usuarios pueden acceder. Dado que los cambios que realice no se pueden fusionar, el sistema evita que dos usuarios procesen el mismo archivo al mismo tiempo. Así, el archivo se asigna al primer usuario que accede a él y durante el procesamiento se marca para los demás usuarios como "protegido contra escritura". Apache Subversion también ofrece la posibilidad de descargar y procesar cualquier ruta secundaria independientemente del resto del árbol de rutas. Para esto, es posible asignar diferentes permisos de lectura y escritura a diferentes lectores para todas las rutas. Además, Subversion se caracteriza por el hecho de que es posible grabar carpetas vacías, renombradas y movidas incluso sin perder el historial.
control de versiones centralizado y distribuido
Git: solución de emergencia para desarrolladores del kernel de Linux
El creador de Linux, Linus Thorvalds, comenzó en abril de 2005 (más o menos sin querer) el desarrollo de un nuevo software de control de versiones. El motivo fue que debido a un cambio en la licencia del BitKeeper utilizado hasta el día de hoy, los desarrolladores del kernel de Linux perdieron su libre acceso. El nuevo sistema debería ofrecer procesos similares como BitKeeper y seguridad contra cambios accidentales o intencionales y también garantizar una alta eficiencia. Solo unos días después, Thorvalds presentó la primera versión de Git.
Git es un sistema de control de gestión distribuido. De hecho, existe un repositorio central, donde convergen todos los cambios, incluso si todos los usuarios descargan sus copias de trabajo. Sin embargo, tienen acceso a todo el repositorio, incluido el historial localmente, y no necesitan estar constantemente conectados a la red. Además, los cambios se envían muy rápido en el repositorio principal. Por lo tanto, Git no ofrece ningún sistema de bloqueo, sino que cada usuario crea sus propias ramas que luego se cargan en el repositorio central; generalmente cada usuario recibe permisos de lectura y escritura para el directorio (sin embargo, si existen varios permisos, se deben crear varios directorios raíz). Cada copia de trabajo es una copia de seguridad independiente del directorio raíz, lo cual es muy recomendable en caso de que se produzca un fallo o se dañe. Git solo registra el contenido de los directorios, ya que los directorios vacíos se eliminan automáticamente.
SVN vs Git: sistemas comparados
Pero, ¿cuál es la mejor solución entonces? No hay una respuesta genérica. Depende de qué sistema de control de gestión se adapte mejor a sus propósitos. Ambos sistemas difieren en estructura y en el proceso resultante. La siguiente tabla resume las principales diferencias:
Extensión SVN
Git
Control de versiones
Central
Distribuido
Repositorios
Repositorio central donde se crean las copias de trabajo
Copias locales del repositorio con las que puede trabajar
Permiso de acceso
Basado en ruta
En todo el directorio
Ver cambios
Grabar archivos
Grabar contenido
Historial de cambios
Completo solo en el repositorio, las copias de trabajo contienen solo la última versión
Los repositorios y las copias de trabajo contienen el historial completo
Conexión de red
En cada acceso
Solo necesaria para sincronizar
Estas son las ventajas respectivas de ambos sistemas:
Deberías preferir Git si
No desea estar conectado todo el tiempo para que pueda trabajar en su proyecto desde cualquier lugar.
Quiere sentirse seguro en caso de que se produzca una falla en el repositorio central o una pérdida de datos.
No necesita permiso de lectura y escritura para directorios especiales (sin embargo, estos también se pueden configurar en una ruta más compleja con Git).
Dar mayor importancia a la transmisión rápida de cambios.
Subversion es la mejor opción si
Necesita permisos de acceso basados en rutas para diferentes áreas de su proyecto.
Desea vincular todo su trabajo a una ubicación central.
Trabajas con muchos archivos binarios.
Desea registrar completamente las estructuras de directorios vacías (Git las elimina, ya que no tienen contenido).
Si las características enumeradas no son de importancia decisiva para usted, se recomienda una prueba de ambos sistemas de control de versiones. En ambos casos, tiene garantizado un buen soporte de una gran comunidad, un proveedor confiable como GitHub y ofertas de soporte profesional.