Presentándose y Entendiendo GGG (GuayaHack, Git, GitLab)#

Hola! Ésta es el primer reto con la que todo newbie deberá comenzar. La programación no es diferente a muchas otras áreas en las cuales hay herramientas básicas cuyo uso es imprescindible. El carpintero usa sus martillos y el esculptor sus cinceles, el programador moderno, en cambio su entorno de desarrollo y herramientas para gestión de código y proyectos.

Ya que GuayaHack es un espacio sin ánimo de lucro, creada y mantenida por voluntarios, necesitamos herramientas y procesos que nos ayuden a funcionar de manera eficiente, mientras que al mismo tiempo compartimos y ayudamos a todos los miembros a adquirir nuevas habilidades y compartir sus conocimientos.

En GuayaHack usamos muchas herramientas, como pueden ver en Infraestructura GuayaHack, pero las dos herramientas más importantes para todo novato son Git y GitLab.

Introducción#

Nuestras Reglas#

Aunque somos un proyecto joven hemos crecido considerablemente, ésto es una ventaja pero tambien requiere que pongamos atención a la cultura que queremos propiciar. Para ésto tenemos nuestro Memorial y nuestras Reglas (Big Endian).

Por favor échales un vistazo. Además, ya que GuayaHack es un espacio de todos, puedes hacernos saber a los moderadores si encontraste errores, inconsitencias o deseas cambiar algo a fin de mejorarlas.

Gestión de código con Git#

Git es una herramienta de código abierto gratuita que los programadores utilizamos para organizar nuestro código, sobretodo cuanto estamos en proyectos con más personas. Así como todo bebé aprende a no interrumpir para poder comunicarse efectivamente, el programador neofito usualmente debería aprender a usar git para poder contribuir cambios y nuevas funciones de forma ordenada a codigos fuente y proyectos que no le pertenecen.

No permitas que la impaciencia te gane, pero tu uso de Git y GitLab nos permite a los voluntarios ayudarte de forma efectiva y eficiente al igual que mantener los cientos de documentos y programas pequeños y grandes creados por la comunidad sin caer en la locura :)

El flujo de trabajo con Git es universal y es como sigue:

../../_images/git-basic-workflow.png

Flujo de trabajo básico con Git#

En la imagen anterior puedes ver tanto los pasos como los comandos asociados con el proceso de gestionar código fuente.

Instalación#

Git es una herramienta muy poderosa, por eso se han escrito libros y grabado videos incontables sobre su instalación y uso. Nosotros no necesitamos saber todo sobre Git, por ahora es suficiente instalarlo y poder utilizar las funciones básicas mostradas en el diagrama anterior. Puedes aprender como instalar Git en tu sistema en El Libro de Git: Instalación

Gestión de Código con GitLab#

Como en muchas profesiones, existen dos habilidades fundamentales que todo programador debe utilizar y mejorar a lo largo de su carrera: aprender a aprender y aprender a organizarse.

Éste proceso nunca termina, pues jamás aprendemos todo lo que hay por aprender y nunca nos organizamos de forma que nunca hay que volver a organizar o gestionar nuestro código, proyectos y demás.

Por éste motivo, las personas que trabajan con tecnología son amantes de herramientas que les permitan organizarse mejor y trabajar de forma más eficiente.

Nosotros en GuayaHack utilizamos gitlab, la plataforma de una empresa Estadounidense que, al igual que otras como GitHub o BitBucket, es utilizada por millones de programadores para gestionar su código y sus proyectos.

Ya que GuayaHack hace parte de el programa de GitLab para Proyectos de código abierto[1], ellos nos han donado las licencias que utilizarán para trabajar.

../../_images/gitlab-project.png

Proyecto de GuayaHack en GitLab#

Propósito#

El propósito de éste reto es que te diviertas y aprendás a usar las herramientas básicas que utilizaremos para comunicarnos y organizarnos entre nosotros: Discord, Git, GitLab y el editor que elijas (VSCode, Sublime, VIM, NeoVim, EMACS, Nano y demás). En nuestra WIKI puedes encontrar dos artículos sobre el uso de VSCode (Guía rápida para usar Visual Studio Code) y el uso de VSCode con Git(Guía Paso a Paso: Cómo Usar GIT en Visual Studio Code)

Carpintero a tu zapato, pero después de saber usar las herramientas :)

Objetivo#

Tú objetivo será 1 crear tu espacio en GuayaHack, crear tu index.md de presentación similar a @jdsalaro y 2 agregar tu nombre a la lista de miembros en Comunidad enlazándolo con 1.

Información adicional#

Registrándote en GitLab#

../../_images/gitlab-registration.png

Registrándote en GitLab#

Pasos#

Solicitando acceso a /guayahack/members#

Puedes solicitar acceso al proyecto de /guayahack/main a través del grupo /guayahack/members: https://guayahack.co/reto/on-boarding-git-gitlab/

../../_images/gitlab-project.png

Solicitando acceso al grupo de GuayaHack en GitLab#

Verificando que tienes acceso a /guayahack/members#

Una vez que solicites acceso los moderadores recibirán una notificación y una vez la aprueben deberías poder ver tu nombre en la lista de miembros del grupo /guayahack/members:

../../_images/gitlab-group-members.png

Verificando que un usuario GitLab se encuentra en los miembros de un grupo#

Clonando main @ GuayaHack#

git clone git@gitlab.com:guayahack/main.git

Creando tu rama o branch#

git checkout -b <REEMPLAZAR>

Realizando cambios y haciendo push#

# Agrega todos los archivos del directorio actual al stage 

git add . 

# Agrega la descripción del commit al stage

git commit -m "<REEMPLAZAR>" 

# Envía los datos al "origin" (la rama del repositorio REMOTO, aka Gitlab)

git push 

Verifica en el projecto de /guayahack/main/ que puedes ver tu nueva rama creada.

../../_images/gitlab-project-branches.png

Lista de ramas en un repositorio Git hospedado en GitLab#

Creando un Merge, también llamado Pull, Request#

Ahora deberás crear una solicitud de incorporación de cambios, también llamada Merge Request, basada en esa rama que creaste.

../../_images/gitlab-project-branches-new-mr.png

Creando una nueva Merge Request en GitLab#

Recuerda, de ahora en adelante, que una Merge Request siempre está basada en la versión más actualizada de una rama o branch; puedes leer más sobre ésto en Git para principiantes: estrategias de branching.

../../_images/gitlab-branch-new-merge-request.png

Editando una nueva Merge Request#

Verificando Cambios#

Ahora, verifica que todos tus cambios se ven como lo planeaste:

../../_images/gitlab-mr-view.png

Vista de una Merge Request recién creada#

Mira que el texto, las imágenes, todo está correcto.

../../_images/gitlab-mr-changes.png

Cambios realizados en una Merge Request#

Aprobación e incorporación de cambios#

Una vez tu hayas asignado a un moderador cómo reviewer o revisor de tu Merge Request, éste deberá aprobarla para que tu puedas hacerle “Merge” a tus cambios, es decir los puedas incorporar a master la rama principal del proyecto.

../../_images/gitlab-mr-approval.png

Approvación de una Merge Request por parte de un Moderator#

Problemas Comunes#

Problema#

En caso de que nos arroje un error de que no encuentra el origen, debemos agregar

# Envía los datos al "origin"/<REEMPLAZAR> 

git push --set-upstream-to=origin/<REEMPLAZAR> 

Pistas#

En caso de necesitar un poquito de inspiración, puedes leer éste tutorial escrito por uno de nuestros miembros: Como Resolví /reto/on-boarding-git-gitlab