Hace algún tiempo escribí un post sobre los hook de git y su utilidad para automatizar tareas, hoy quiero mostrar un ejemplo que he estado usando los últimos días, el hook commit-msg
para no olvidar agregar el id de issue en los commits.
Si utilizas github/gitlab y su sistema de issues, es una buena práctica asociar los commits a issues.
Si eres como yo probablemente muchas veces has olvidado agregar el id del issue en el commit, bueno para eso puedes usar el hook commit-msg
, el cual se activa después que el mensaje de commit es generado y antes que el commit es agregado. (más detalles en Customizing Git - Git Hooks), con algo como esto
#!/bin/bash
MSG="$1"
if ! egrep -qE "#[0-9]+" "$MSG";then
cat "$MSG"
echo "Your commit message must contain some issue reference '#...'"
exit 1
fi
https://gist.github.com/juanpabloaj/fe7b8203ed967488d22c004c13846cfa
Y cuando no quieras que el hook sea activado usa la opción
git commit --no-verify
Algunas ventajas de agregar los id en cada commit son cosas como: cuando vayas a crear un nuevo tag puedes saber cuantas issues agregaste desde el último tag (donde 1.0.1 representa el último tag creado), y revisar en github/gitlab el detalle de los issues.
git log --oneline 1.0.1..HEAD | grep \# | sed 's/.*\(\#[0-9]*\).*/\1/' | sort | uniq -c