Saltar a contenido

Conventional Commits

Introducción

Los Conventional Commits (Commits Convencionales) son una convención para estructurar y etiquetar los mensajes de commit en proyectos de desarrollo de software. Esta convención tiene como objetivo estandarizar la forma en que se escriben los mensajes de commit, lo que facilita la comprensión del historial de cambios y mejora la comunicación entre los miembros del equipo de desarrollo.

Ventajas de utilizar Conventional Commits

El uso de Conventional Commits proporciona varios beneficios:

  • Facilita la lectura del historial de cambios: Los mensajes de commit siguen una estructura definida, lo que permite entender rápidamente qué cambios se realizaron en cada commit y por qué.

  • Simplifica la generación de changelogs: Los Conventional Commits permiten generar automáticamente registros de cambios (changelogs) más claros y estructurados, lo que facilita su mantenimiento y comprensión.

  • Integración con herramientas y servicios: Muchas herramientas y servicios de desarrollo de software, como sistemas de integración continua y servicios de revisión de código, pueden aprovechar la estructura de los Conventional Commits para realizar tareas automáticas o brindar información adicional.

Estructura de un Conventional Commit

El commit debe tener la siguiente estructura:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
  • type: Indica el propósito o la naturaleza del cambio realizado. Puede ser uno de los siguientes valores que se encuentran en la sección Tipos de Conventional Commit.

  • optional scope: Describe la parte del sistema o el componente afectado por el cambio. No es obligatorio, pero puede ser útil en proyectos grandes o cuando hay múltiples componentes.

  • description: Proporciona una explicación concisa del cambio realizado. Debe ser breve pero descriptiva.

  • optional body: Proporciona una explicación más amplia y detallada sobre el cambio o los cambios. No es obligatorio, pero puede ser util en caso de que de ser necesario agregar más información al commit.

  • optional footer(s): El footer generalmente contiene referencias cruzadas a problemas o solicitudes de extracción (pull requests) asociados, junto con cualquier otra información relevante. Estas referencias pueden incluir números de problema, números de solicitud de extracción, identificadores de seguimiento, etc. Por ejemplo, si estás utilizando una herramienta de seguimiento de problemas como JIRA o GitHub Issues, podrías incluir el número del problema en el footer.

Tipos de Conventional Commit

  • feat: Se utiliza para agregar una nueva característica o funcionalidad al proyecto.

  • fix: Se utiliza para corregir un error o bug existente en el proyecto.

  • docs: Se utiliza para actualizar la documentación del proyecto.

  • style: Se utiliza para realizar cambios que no afectan la lógica del código, como cambios en el formato, espaciado, etc.

  • refactor: Se utiliza para realizar cambios en el código que no agregan nuevas funcionalidades ni corrigen errores, pero mejoran su estructura o legibilidad.

  • perf: Se utiliza para realizar cambios que mejoran el rendimiento del código.

  • test: Se utiliza para agregar, modificar o corregir pruebas unitarias o de integración.

  • chore: Se utiliza para realizar cambios en tareas de mantenimiento, configuración, actualización de dependencias, etc.

  • build: Indica cambios en el sistema de construcción o en las dependencias externas.

  • ci: Se emplea para cambios en la configuración de la integración continua.

  • revert: Indica la reversión de un commit previo.

Hay 3 tipos que se utilizan para comunicar la intención del commit a terceros:

  • fix: Está relacionado con la versión PATCH del proyecto.
  • feat: Se relaciona con la versión MINOR del proyecto.
  • BREAKING CHANGE: Este se utiliza en el footer de un commit, indica que se rompe la compatibilidad de la versión actual y está relacionado con la versión MAJOR del proyecto.

Ejemplos de Commits

Commit de nueva característica (feat)

feat: agregar funcionalidad de autenticación de usuarios

Se implementó un sistema de autenticación para permitir que los usuarios inicien sesión en la aplicación.

Commit de corrección de error (fix)

fix: solucionar error al guardar configuración del usuario

Se corrigió un error que provocaba que la configuración del usuario no se guardara correctamente en la base de datos.

Commit de documentación (docs)

docs: actualizar README con instrucciones de instalación

Se agregaron instrucciones detalladas en el archivo README para guiar a los nuevos usuarios en el proceso de instalación del proyecto.

Commit de estilo (style)

style: aplicar reglas de linting al código

Se corrigieron los estilos y el formato del código siguiendo las reglas de linting establecidas en el proyecto.

Commit de refactorización (refactor)

refactor: simplificar función de búsqueda

Se refactorizó la función de búsqueda para mejorar su rendimiento y reducir la complejidad del código.

Commit de pruebas unitarias (test)

test: agregar tests unitarios para el módulo de autenticación

Se añadieron pruebas unitarias exhaustivas para garantizar el correcto funcionamiento del módulo de autenticación.

Commit de tareas de mantenimiento (chore)

chore: actualizar dependencias del proyecto

Se actualizaron las dependencias del proyecto a las últimas versiones para mantener la compatibilidad y aprovechar las mejoras más recientes.

Commit de mejora de performance (perf)

perf: Mejorar rendimiento en la generación de informes

En este commit, se realizan optimizaciones en el proceso de generación de informes para mejorar su rendimiento.

Commit de compilación (build)

build: Actualizar script de compilación para incluir nuevos archivos

Este commit actualiza el script de compilación del proyecto para incluir nuevos archivos que se agregaron al repositorio.

Commit integración continua (ci)

ci: Configurar integración continua con GitHub Actions

En este commit, se configura la integración continua utilizando GitHub Actions para automatizar las pruebas y el despliegue del proyecto.

Commit revert (revert)

revert: Revertir el commit anterior que introdujo un bug

Este commit revierte los cambios realizados en el commit anterior, ya que introdujeron un error en el código.

Commit rompiendo la compatibilidad de la versión actual

feat: permitir que un objeto config proporcionado extienda de otras configuraciones

BREAKING CHANGE: la clave `extends` del archivo config se utiliza ahora para extender

Commit con scope

fix(parser): corregir errores al analizar las expresiones regulares
fix(api): impedir la creación de usuarios duplicados

Este commit corrige un error por el que la API permitía crear usuarios duplicados
con la misma dirección de correo electrónico. Esta confirmación también añade una nueva restricción `unique`
la tabla `users` para evitar que esto suceda en el futuro.

Emparejado con: X
Fixes #123

Para más información puede dirigirse a la pagina oficial Conventional Commits.