La semana pasada tuvimos la grata oportunidad de preparar e impartir un muy interesante curso sobre la herramienta GIT, como parte del programa de formación Devops 2020, dirigido a compañeros del equipo de trabajo de CEPSA. El curso contó con la presencia de más de 80 participantes, teniendo una duración de 4 días, con una extensión de 3 horas por sesión diaria, y fue impulsado por la compañía en el marco del proceso de transformación digital.

El curso de GIT formará parte de una serie más amplia de cursos y talleres sobre diversas herramientas, como Jenkins y Docker, así como formaciones varias sobre Cloud, entre otros tópicos de relevancia.

La responsabilidad de elaborar el material de apoyo para el curso ha estado bajo mi cargo como CTO de Gravity.

GIT es una herramienta que fue diseñada para guardar todos los cambios efectuados a una aplicación de forma atómica o incremental, entendiendo que cada cambio o variación puede ser simplemente una palabra, o una sección particular de un archivo determinado. Esta poderosa herramienta fue diseñada por Linus Torvalds, el mismo desarrollador del sistema operativo Linux.

Durante la formación disertamos sobre los conocimientos básicos necesarios para construir y gestionar un repositorio de GIT local, así como el manejo y actualización de ramas, lo que normalmente se conoce como branching.

También se dio a conocer la forma correcta de guardar la información en los commits que se hacen dentro de cada una de las ramas, y los criterios para distribuir el trabajo de forma adecuada.

Esto último implica otra cuestión relevante, sobre la que tratamos detalle durante el curso: la creación de repositorios remotos y la conexión con repositorios remotos, la transferencia de trabajo entre ramas de distintos compañeros que estén trabajando en paralelo en un proyecto compartido, cómo colaborar contra un repositorio en remoto y cómo hacer un pull request.

En conclusión, a lo largo de la formación discutimos todo aquello relativo a los aspectos operativos de esta herramienta y los ciclos de trabajo profesionales. Pero sobre todo, hemos hecho énfasis en lo que se refiere a la mecánica y las buenas prácticas de uso de la aplicación, organizando y orquestando el trabajo de todo un equipo de desarrolladores de un mismo repositorio, especialmente si se trata de un equipo de desarrolladores que ha alcanzado ya un cierto nivel de madurez como colectivo de trabajo.

Sobre este último aspecto planteamos un mecanismo de trabajo basado en rebase de ramas para que el código desarrollado sea muy limpio y la resolución de conflictos sea lo más clara posible. Ello, significa que cada desarrollador pueda ser autónomo con su trabajo, con una separación muy limpia en lo que respecta al manejo de cambios de código, de forma tal que aunque se produzcan conflictos -que normalmente ocurren en los puntos de colisión de ficheros-, cada desarrollador tenga la suficiente independencia y capacidad de solventarlos, y no hayan dudas al momento de su resolución.

En el curso también hemos impartido una política muy clara para la gestión de releases y hotfixes, que constituyen soluciones en productivo. Adicionalmente, hemos tratado sobre comandos un tanto semi avanzados, es decir, la construcción o reparación de commits que han sido ya publicados, reestructuración de la línea de tiempo de una rama y demás técnicas relacionadas.

Por otro lado, hemos discutido sobre cómo compartir y modificar una rama remota que ha sido pusheada anteriormente, y que haya sido compartida con otros desarrolladores del equipo. Finalmente, se definió el concepto de tag en GIT y cómo se propaga este tipo de información entre todos los miembros del equipo.

Consideramos que el curso ha sido muy interesante. En efecto, durante su realización pudimos constatar una excelente aceptación y respuesta por parte de los participantes.

Muchos de los asistentes nos hicieron saber de su satisfacción al haberlo realizado, y en nuestra opinión, ello se debe a que no fue un curso de aquellos que tradicionalmente suelen hacerse cuando se trata de este tipo de herramientas.

Hemos hecho un gran esfuerzo para brindar elementos de valor muy diferentes a los que se obtienen en cursos convencionales, en tanto el conocimiento que hemos compartido está basado en la amplia experiencia propia que tenemos en el uso de esta herramienta.

En muchos momentos y situaciones complicadas el uso de la herramienta GIT, bajo las técnicas que hemos ya comentado, nos ha permitido literalmente salvar el día, en lo que respecta al desarrollo de proyectos de gran envergadura.

Como un valioso aporte a nuestros lectores y público en general, y para promover la continuidad a futuro de este tipo de actividades formativas clave, hemos decidido compartir el documento en formato pdf que a solicitud de Cepsa hemos preparado como material de apoyo para el curso, que podrán descargar aquí.

Finalmente, consideramos que esta iniciativa fortalece en gran medida los lazos de cooperación técnica y confianza entre nuestros clientes y Gravity, por lo que la saludamos fraternalmente, y proponemos darle continuidad en el futuro, en el marco de la transformación digital que están acometiendo las compañías.

En esta actividad participaron además de empleados directos, colaboradores de la empresa, y en la actualidad la compañía está haciendo esfuerzos considerables para difundir a más personas este curso.

Jose Barragan

Jose Barragan

Senior enterprise architect, with over 20 years of experience in the business sector. With a high expertise on different technologies, and involved in a lot of high-performance business environments.