¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Git
  3. Git y la gestión de versiones
Extrait - Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion)
Extractos del libro
Git Controle la gestión de sus versiones (conceptos, utilización y casos prácticos) (2a edicion) Volver a la página de compra del libro

Git y la gestión de versiones

La gestión de versiones

Un sistema de gestión de versiones (VCS en inglés, Version Control System, o también SCM, Source Content Management) o sistema de versiones es un sistema que registra todas las modificaciones introducidas en una lista de archivos. Es un sistema que permite seguir con precisión la evolución del contenido de los archivos. Este tipo de sistema se emplea mucho en el desarrollo informático, pero no está limitado a este, ya que cualquier actividad que utiliza archivos legibles podrá ser seguida por un VCS. Por ejemplo, los sistemas Wiki (como Wikipedia) utilizan un VCS. También es posible citar el conocido sitio de asistencia informática Stack Overflow, que sigue las versiones de las preguntas y respuestas.

El seguimiento de los archivos se efectuará para la protección de los cambios. En efecto, cuando haya terminado de editar un archivo, indicará al VCS que ha terminado el trabajo y la razón para hacerlo. Las modificaciones efectuadas en el archivo son registradas por el sistema.

Se añadirá una nueva línea (que llamaremos revisión) en su historial. El término revisión (llamado también commit en inglés) define un conjunto de modificaciones que son registradas por el sistema.

Los beneficios de ese sistema son múltiples y van mucho más allá del seguimiento puro y simple...

Los beneficios de la gestión de versiones

1. Una verdadera máquina del tiempo

Imaginemos una situación habitual: usted es un trabajador autónomo y comienza su semana. El lunes por la mañana, a las 9:00, le llama uno de sus clientes: «Debe cambiar mi sitio web para guardar todo lo que hacen los usuarios del sitio». Se apresura a disculparse y cambia el código para añadir la funcionalidad lo más rápido posible. Una vez realmente despierto -una hora y dos cafés más tarde- se percata de que no ha tomado la dirección correcta. El código que ha desarrollado no servirá de nada y complica la aplicación; había una manera mucho más simple de hacerlo. Su VCS le permite volver con facilidad atrás como si el principio del lunes no hubiera existido. Entonces empieza con un directorio de trabajo limpio.

Pero su VCS llega más allá, ya que puede permitirle dar un paso atrás de varios años sin problema, siempre que lo haya usado en ese momento.

Un sistema de versionado permite volver con facilidad atrás y a cualquier momento del histórico.

2. Una documentación detallada y fechada

En un equipo, cuando añadimos una funcionalidad a un software, es frecuente que seamos bloqueados por una o varias líneas que no se comprenden. El código está poco documentado y no del todo claro....

Historia de la gestión de versiones

1. Sistemas de gestión de versiones locales

Los sistemas de almacenamiento local son sistemas donde todos los usuarios comparten el mismo sistema de archivos. El sistema conserva los archivos originales y todas las modificaciones efectuadas a continuación. De esta forma, se puede recuperar los archivos en cualquier momento que se haya utilizado el VCS. Los sistemas de almacenamiento local aparecieron en 1972 mediante SCCS (Source Code Control System), desarrollado por Marc Rochkind mientras trabajaba para los laboratorios Bell.

En 1982, durante un proyecto universitario, Walter F. Tichy publicó GNU RCS (Revision Control System); aportaba, por su parte, una importante mejora de rendimiento en comparación con SCCS gracias a otra forma de almacenar los archivos. En efecto, RCS almacena las últimas versiones de los archivos y la diferencia con el archivo anterior, lo que permitía tener la última versión de los archivos con mayor rapidez.

Este tipo de solución no permitía a los colaboradores trabajar juntos si no utilizaban el mismo sistema de archivos. La colaboración no era fácil y no permitía ninguna movilidad. Con estos sistemas solo se mantiene la versión de los archivos, cada uno de los cuales posee su propia historia de versión.

Después de haber sido muy utilizado en el mundo del libre, RCS poco a poco fue sustituido por CVS.

2. Sistemas de gestión de versiones centralizados

En este tipo de sistema, todos los datos del seguimiento de versión se almacenan en un servidor. A partir de estos sistemas, el administrador del VCS podía limitar los privilegios de algunos usuarios. Entre el software de gestión de versiones centralizado, se puede considerar CVS (Concurrent Versions System) y Subversion (o SVN). CVS apareció en 1990. Fue el primero en utilizar un sistema centralizado. Se usó mucho en el mundo del software libre y se sustituyó por Subversion en 2000. En efecto, Subversion nació del deseo de la empresa CollabNet de mejorar algunos aspectos de CVS. Los puntos de mejora más significativos fueron:

  • Los commits se hicieron atómicos. Un commit corresponde a una serie de modificaciones (esto se explica más detalladamente en el capítulo Operaciones de archivos y commit). Esto significa...

¿Por qué Git?

En primer lugar, como hemos visto en las páginas anteriores, Git es un sistema libre. No puede haber limitaciones contractuales sobre el uso de Git. Sea cual sea el número de colaboradores, de proyectos o actualizaciones, Git siempre será gratuito.

Git posee también todos los beneficios derivados de los sistemas de gestión de versiones descentralizados. Es decir, que es posible trabajar en modo desconectado con su repositorio manteniendo las características avanzadas de colaboración cuando se está conectado.

Git también tiene otra ventaja importante: su rendimiento. Git incorpora muchas herramientas internas para mejorar su rendimiento (en particular para el uso de las ramas).

Una última ventaja muy importante: Git es actualmente el sistema más popular y gana en popularidad cada año. Es difícil contar con estadísticas precisas sobre los sistemas de gestión de versiones instalados y usados en las empresas. Sin embargo, es posible juzgar la popularidad de algunos términos utilizados en búsquedas en Google gracias a Google Trends. Por consiguiente, es posible tener una idea del volumen de búsquedas de determinadas palabras clave. He aquí el gráfico comparativo de Git, Mercurial y Apache Subversion.

IMAGES/01EPT01N.png

Stackoverflow también ofrece una herramienta para comparar la popularidad de diferentes términos....