Automatiza tu flujo de trabajo con git hooks

Crédito: Atlass

¿Qué son los ganchos de git?

Los ganchos Git son scripts que se ejecutan antes de ciertos eventos como commit, push, rebase, etc. Dado que están basados ​​en eventos, cuando ejecuta ciertos comandos git, git verificará los ganchos dentro del repositorio git para ver si hay un script asociado para correr. Los ganchos se encuentran en el directorio .git / hooks.

cd .git / ganchos

Si enumera los archivos en ese directorio, verá los siguientes ganchos de muestra.

1. applypatch-msg.sample
2. commit-msg.sample
3. post-update.sample
4. pre-applypatch.sample
5. pre-commit.sample
6. pre-push.sample
7. pre-rebase.sample
8. pre-recieve.sample
9. prepare-commit-msg.sample
10.actualización.muestra

Cómo usarlos para mejorar tu flujo de trabajo de git

Si alguna vez ha trabajado en un proyecto de código abierto con muchos colaboradores o tal vez usted es el líder del equipo técnico en un proyecto y está buscando formas de mejorar el flujo de trabajo git de su equipo de tal manera que ciertos errores de flujo de trabajo que los desarrolladores cometen propensos a ser evitados antes de que se comprometan, tal vez eres un desarrollador al que siempre le gusta tener su juego A a 100 todo el tiempo, tal vez ahora sea un buen momento para explorar git hooks.

En este artículo, le mostraré cómo usar el gancho de git previo a la inserción para ejecutar pruebas antes de insertar el código en su rama remota. En esta publicación, usaré PHP.

Si está utilizando un libro de Mac, sígalo. Si está utilizando una PC con Windows, los comandos de shell serán diferentes. Los comandos de Windows no se proporcionan en esta publicación.

Clonar este repositorio. Contiene un proyecto construido con Laravel y contiene algunas pruebas unitarias escritas con PHPUnit. Una vez que haya clonado y configurado, cambie el directorio al directorio git hooks y cree un archivo de inserción previa. Abre esto con tu editor de texto favorito, yo uso Atom.

cd .git / ganchos
toque pre-empuje
atom pre-push // Abre este archivo con cualquier editor de texto que te guste

Idealmente, quiero poder ejecutar las pruebas antes de enviar el código a mi rama remota. Si el script de enlace sale con 0, entonces todo está bien y git continúa enviando el código a mi rama remota. Si sale con un código distinto de cero, git detiene la operación.

Línea 7:
La función exec activa el comando para ejecutar las pruebas que es vendor / bin / phpunit en este caso.

Si está utilizando cualquier otro marco de prueba como codeception, entonces debe reemplazar vendor / bin / phpunit con el comando específico para ejecutar las pruebas en el marco elegido. El contenido de la variable de salida será una matriz poblada con cada línea de salida del comando.

Línea 9:
Si el código de salida no es igual a 0, la prueba no se ejecutó correctamente. Puede examinar el contenido de la variable de salida y determinar qué elemento de la matriz desea mostrar en su terminal. He mostrado el elemento en el índice 14 que muestra un resumen de las pruebas, pases y fallas. Esta parte realmente depende de ti. Puede generar lo que desee en el terminal; La conclusión es que git se detiene y el evento push no ocurre de todos modos.

Línea 18:
Un código de salida cero significa que todos somos verdes. Git continúa con el evento push a su rama remota.

¿Qué sigue?

Haga que el archivo de inserción previa sea ejecutable para que funcione como un enlace.

chmod a + x pre-push

Ahora proceda a realizar un pequeño cambio en cualquiera de los archivos del proyecto y ponga en escena los archivos modificados. Puede modificar su código para activar una falla solo para que podamos ver el gancho en acción de inmediato.

ga. && gc -m "algún pequeño cambio"
git push origin the-branch-you-are-on

Si hay una falla, verá algo como lo que está debajo en su terminal:

¿Cuál es el beneficio de esto?

1. Digamos que olvidó ejecutar el comando de prueba antes de presionar, esto le ahorra la vergüenza que podría enfrentar cuando la compilación falla en github / bitbucket / gitlab.
2. Ejecutar la prueba manualmente todo el tiempo antes de presionar es una tarea repetitiva, ¿qué hacemos con las tareas repetitivas? ¡Yo también pensé lo mismo! Además, aumenta su productividad.
3. Puede hacer cosas realmente geniales, como calcular el tiempo total que llevó ejecutar las pruebas. De esa manera, puede saber de inmediato si las pruebas tardaron demasiado en ejecutarse. Realmente depende de ti.

Siéntase libre de explorar otros casos de uso para los diferentes ganchos de git. Git Hooks es una herramienta interesante para automatizar su flujo de trabajo. Comparte tus pensamientos a través de la sección de comentarios a continuación.

¿Te ha resultado útil esta publicación? Amablemente muestra algo de amor y comparte.