Cómo automatizar los mensajes de commit de Git
(insight.infograb.net)*Cuando escribir mensajes de commit de Git se vuelve frustrante
- Los mensajes de commit con emoji y número de issue son fáciles de rastrear y se ven bien
- Pero cuanto más largos y complejos son los mensajes de commit, más incómodo es escribirlos cada vez y más frecuentes son los errores
- Tener que buscar el emoji adecuado cada vez es una tortura
*Forzar mensajes de commit de Git con Git Hooks
- Git Hooks es una función que ejecuta scripts definidos por nosotros cuando ocurren eventos relacionados con Git
- Esta función se divide en hooks del servidor y hooks del cliente
*Hook del servidor: usar la función push rule de Git
- Si se coloca un script que revise el mensaje de commit en el hook
pre-receive, se evita que se haga push al servidor - En GitLab, se puede usar la función push rule para revisar los mensajes de commit con expresiones regulares
- Si detecta un mensaje de commit que viola la expresión regular, rechaza ese push y genera un error
*Hook del cliente: revisar con anticipación antes de hacer push
- Se puede crear un script en el hook
commit-msg, antes de completar definitivamente el commit, para revisar el mensaje de commit - Si se quiere modificar el mensaje de commit, se puede escribir un script relacionado en el hook
prepare-commit-msg
*El método de automatización de mensajes de commit de Infograb
- Crearon un sistema de automatización de mensajes de commit usando Husky y Commitlint
- Husky es un módulo npm que ayuda a gestionar Git Hooks. Crea archivos de hook con scripts dentro del directorio
.husky. Luego, al ejecutar el comandonpx husky install, ese script se registra en Git commitlintes una herramienta para gestionar fácilmente las convenciones de commit y revisar mensajes de commit. La convención de commit definida por el equipo se escribe en formato JSON. Luego, se revisan los mensajes con el comandocommitlint
- Definir la convención de commit en formato de
commitlint
- Tomando como base la estructura general del mensaje de commit, se definen en el archivo
commitlint.config.tslas propiedades adecuadas para cada equipo
- Registrar
commitlinten Husky
- Registrar el comando
commitlinten el hookcommit-msg. Se agrega el script en el archivo.husky/commit-msg
- Añadir automatización
- Automatizar tareas como agregar emojis o insertar números de issue
- En el equipo de producto de Infograb, configuraron que al ingresar solo el tipo (
feat,fix), se agregue automáticamente el emoji, que la primera letra del tipo se corrija automáticamente a mayúscula, y que si la rama tiene un número de issue, este se agregue automáticamente al footer - El script de automatización se puede colocar en el hook
prepare-commit-msg
2 comentarios
También va bien usarlo junto con commitizen.
Gracias por la buena herramienta.