Agregando el nombre de la rama en el mensaje de commit usando Git Hooks

Github Hooks es una herramienta increíble para automatizar acciones antes o después de ejecutar un comando de git. Algunos escenarios comunes donde podemos usar Hooks son:

  • Validar el formato (usando eslint, por ejemplo) antes de un commit
  • Validar el formato del mensaje de nuestro commit
  • Actualizar una versión de un archivo o configuración
  • Agregar un texto predeterminado en el mensaje de commit

En este artículo, aprenderemos cómo agregar como texto predeterminado el nombre de la rama en el mensaje de un commit. Una práctica común es crear una nueva rama para cada historia de usuario poniendo como nombre el ticket o número de historia, de esta manera, podemos realizar alguna otra acción como mover el ticket automáticamente de estado o crear un enlace entre la historia de usuario y cada commit en la rama.

Algunos ejemplos de números de historias de usuario en Jira u otros bugtrackers son:

  • U-0001
  • COMP-0001
  • HISTORIA-001

Para crear nuestro hook para agregar el nombre de la rama en el mensaje de commit, debemos navegar a la carpeta de los hook en nuestro proyecto.

Naveguemos hasta el proyecto de nuestra carpeta y abramos la carpeta de git y luego la carpeta hooks. Allí encontrarás algunas plantillas predeterminadas para crear tu propio hooks.

Ejemplo en macOS:

Ahora tenemos que crear un archivo con el nombre prepare-commit-msg.“prepare commit message” es la acción ejecutada antes de establecer el mensaje del commit.

Dentro del archivo prepare-commit-msg debe agregar el siguiente código

# prepending commit message.
if [ -z "$BRANCHES_TO_SKIP" ]; then
  BRANCHES_TO_SKIP=(master develop release)
fi

BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_NAME="${BRANCH_NAME##*/}"

BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
BRANCH_IN_COMMIT=$(grep -c "\[$BRANCH_NAME\]" $1)

if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]] && ! [[ $BRANCH_IN_COMMIT -ge 1 ]]; then
  sed -i.bak -e "1s/^/$BRANCH_NAME - /" $1
fi

En la línea número 13, podemos ver cómo se establece el nombre del branch. Podemos agregar más texto o palabras predeterminadas después del nombre del branch, en este caso, solo tenemos un guión.

Con esta configuración, solo necesitamos agregar nuestro mensaje y, de forma predeterminada, agregaremos el nombre del branch actual al comienzo del mensaje.

Referencia: https://www.c-sharpcorner.com/article/adding-branch-name-in-the-commit-message-automatically-using-git-hooks/

Recuerda siempre seguir aprendiendo con mis cursos en https://mteheran.dev/cursos