Convención de Commits Semántica
Esta convención de commits semántica tiene como objetivo mantener un historial de cambios claro, legible y organizado. La convención incluye una estructura de mensaje que sigue una acción semántica, con la opción de agregar un scope para especificar la parte afectada del proyecto. Esto permite al equipo entender fácilmente qué cambio se realizó y en qué parte del proyecto se aplicó.
Estructura del Mensaje de Commit
Section titled “Estructura del Mensaje de Commit”Cada mensaje de commit debe seguir la estructura siguiente:
<acción>(<scope opcional>): <descripción corta>- Acción: Indica el tipo de cambio realizado. Es obligatorio y debe estar en inglés para estandarización.
- Scope: Es opcional, y sirve para especificar el área afectada del proyecto (por ejemplo,
auth,api,database, etc.). - Descripción corta: Un breve resumen del cambio. Máximo 70 caracteres para mantener el mensaje conciso.
Lista de Acciones
Section titled “Lista de Acciones”| Acción | Descripción | Ejemplo |
|---|---|---|
Add | Para agregar una nueva funcionalidad o archivo al proyecto | Add(auth): función de autenticación de usuarios |
Update | Para realizar cambios en una funcionalidad o archivo existente | Update(api): mejora el manejo de errores |
Remove | Para eliminar una funcionalidad, archivo o sección de código | Remove: elimina archivos obsoletos |
Fix | Para corregir errores en el proyecto | Fix(database): corrige error en la conexión |
Refactor | Para refactorizar el código sin cambiar su funcionalidad | Refactor(auth): simplifica lógica de validación |
Docs | Para agregar o mejorar la documentación del proyecto | Docs: actualiza guía de configuración |
Style | Para cambios que no afectan la lógica (p. ej., formateo, comas, sangrías) | Style: corrige formateo en archivo app.js |
Test | Para agregar o modificar pruebas en el proyecto | Test(auth): añade pruebas de integración |
Chore | Para otros cambios menores, como actualización de dependencias | Chore: actualiza dependencias de desarrollo |
Lista de Scopes
Section titled “Lista de Scopes”A continuación, se presenta una lista de posibles scopes que puedes usar para especificar el área afectada en un proyecto Laravel:
| Scope | Descripción |
|---|---|
auth | Cambios en el sistema de autenticación (login, registro, permisos, etc.) |
api | Cambios en la API (controladores, rutas API, respuestas JSON) |
database | Cambios en la base de datos (migraciones, seeders, configuraciones) |
model | Cambios en los modelos de Eloquent (relaciones, atributos, métodos) |
controller | Cambios en los controladores |
request | Cambios en clases de solicitud (validaciones, reglas personalizadas) |
view | Cambios en vistas Blade o en la estructura HTML |
config | Cambios en archivos de configuración (config/*.php) |
route | Cambios en el archivo de rutas (web.php, api.php) |
middleware | Cambios en middlewares |
artisan | Comandos de Artisan creados o modificados |
service | Cambios en servicios específicos (si el proyecto usa servicios dedicados) |
policy | Cambios en políticas de autorización |
exception | Cambios en el manejo de excepciones y errores |
test | Cambios en pruebas unitarias o de integración |
env | Cambios en variables de entorno o configuración de .env |
css | Cambios en estilos CSS o frameworks de diseño como Tailwind, Bulma |
js | Cambios en scripts JavaScript o lógica del frontend |
Ejemplos de Mensajes de Commit
Section titled “Ejemplos de Mensajes de Commit”Ejemplos con scope:
Add(auth): añade autenticación con Google
Update(api): mejora la respuesta en validación de datos
Fix(database): corrige error en migración de la base de datosEjemplos sin scope:
Remove: elimina archivos temporales del proyecto
Refactor: reorganiza las funciones en auth.js
Style: aplica nuevo formato de código en app.jsRecomendaciones
Section titled “Recomendaciones”- Escribe mensajes claros y breves: Usa un lenguaje sencillo y directo.
- Usa verbo en infinitivo: Mantén consistencia al iniciar cada mensaje con un verbo en infinitivo.
- Scope opcional: Solo usa el scope cuando realmente ayuda a aclarar la parte del proyecto que se ve afectada.
- Descripción precisa: Evita descripciones genéricas como “Arreglado” o “Actualizado”. En su lugar, describe brevemente qué se cambió.
Ejemplos de Buenas Prácticas
Section titled “Ejemplos de Buenas Prácticas”- Correcto:
Add(api): implementa endpoint de autenticación - Correcto:
Fix: corrige error en cálculo de totales - Incorrecto:
Arreglado error en API
Ventajas de utilizar esta Convención
Section titled “Ventajas de utilizar esta Convención”- Claridad: Cada commit tiene una intención clara y concisa.
- Estructura consistente: La estructura facilita la revisión y permite entender el contexto del cambio.
- Historial limpio: Permite identificar y rastrear fácilmente los cambios realizados en el proyecto.