Sistemas de versionamiento y GitLab 1

Standard

Hola a todos, espero todos estén muy bien.

En esta ocasión les traigo un post sobre Sistemas de versionamiento, pero antes les dejo un poco de los problemas que busca resolver.

Al momento de desarrollar software es común trabajar en equipo. Estos equipos pueden ser pequeños, medianos o grandes, esto trae como resultado que haya muchos conflictos en el manejo de los archivos del proyecto. Imaginen el escenario donde los archivos se comparten por medio de una memoria USB… ¿Quién tiene la última versión? ¿Quién fue el último desarrollador en modificar “x” archivo?

Para resolver estos problemas se crearon los sistemas de control de versiones (VCS, por sus siglas en ingles); Estas herramientas nos permiten automatizar un control de versiones en los archivos. Dependiendo de la herramienta nos generan un historial de cambios de cada archivo, marcando por ejemplo: quien fue la última persona en modificar un archivo, que cambios o que líneas del archivo fueron modificadas, nos permiten también tener un manejo de conflictos entre cambios con el fin de evitar de que los cambios hechos por un desarrollador se sobrescriban por los hechos por otro.

Existen dos tipos de VCS:

  • Centralizados: se basan en que solo hay una copia central del proyecto en algún lado, usualmente un servidor habilitado para ello, desde el cual los usuarios descargan los cambios realizados por el equipo y suben sus propios cambios.

version-control-fig2

  • Distribuidos: los sistemas de versionamiento distribuido no dependen de un solo repositorio, en su lugar, cada usuario tiene su propio repositorio local en el cual realiza sus cambios y una vez terminada la funcionalidad, lo puede o no enviar al repositorio de donde lo obtuvo o incluso a un nuevo repositorio donde los demás usuarios podrán tener acceso a esa nueva funcionalidad.

version-control-fig3

Entre los VCS más usados tenemos a:

  • CVS: Esta en uso desde la década de los 80’s y es un control de versiones centralizado.
  • SVN que fue desarrollada como una alternativa a CVS que buscaba resolver sus deficiencias o bugs, pero a la vez mantenían compatibilidad. Sigue siendo un sistema centralizado.
  • Git: que fue desarrollado por Linus Torvalds, la principal diferencia con los dos primeros es que Git fue pensado como un sistema de control de versiones distribuido. Cada desarrollador tiene su propio repositorio local que puede modificar a su gusto y al final integrarlo con otros desarrolladores o en algún repositorio de otra persona sin necesariamente afectar a todos.
  • Mercurial: es también un control de versiones distribuido y fue desarrollado para competir con Git como el sistema de versionamiento principal en el desarrollo del kernel de linux.

Entre los VCS mas usados actualmente por su versatilidad y características que proporcionan es Git. GitLab es una herramienta para tener un manejo mas amigable de los repositorios de archivos que se manejan por medio de este VCS. Entre las características que nos ofrece esta un stream con toda la actividad que ha ocurrido en los repositorios, un visor de archivos del repositorio al que tengamos acceso, una wiki para documentar proyectos o problemas comunes, un administrador de problemas a resolver en el proyecto y web hooks que son acciones a ejecutar en base a una acción realizada en el repositorio.

En la siguiente entrega instalaremos y configuraremos una pequeño servidor de Git por medio de Gitlab y poder realizar pruebas de tareas básicas de versionado de archivos.

Les dejo un saludo y nos vemos pronto.

One thought on “Sistemas de versionamiento y GitLab 1

Leave a Reply

Your email address will not be published. Required fields are marked *