farma-ya

2.6. Control de Versiones

Este documento analiza el uso de Git como sistema de control de versiones en el proyecto FarmaYa.

Información General del Repositorio

Estadísticas del Repositorio

Commits Totales

Ramas

Contribuidores

Contribuidor Commits Porcentaje
jgcamiloaga 95 91.3%
SugaAG 4 3.8%
Carlos Huane 1 1.0%
DeivisGasparr 1 1.0%
Johann Camiloaga 1 1.0%
TOTAL 104 100%

Análisis de Commits

Distribución por Tipo de Cambio

Basado en los mensajes de commit analizados, la distribución aproximada es:

Patrón de Commits

Los commits siguen un patrón consistente:

Ejemplos de mensajes de commit:

Estrategia de Versionado

Ramas por Componente

Flujo de Trabajo

  1. Desarrollo: Trabajo en ramas feature o directamente en backend/frontend
  2. Integración: Merge a main cuando funcionalidad completa
  3. Despliegue: Código en main listo para producción

Registro Detallado de Commits

Historial Completo de Commits (103 commits totales)

A continuación se presenta el registro cronológico completo de todos los commits realizados en el proyecto:

Commits Recientes (últimas 2 semanas)

Commits de Desarrollo Backend (últimas 4 semanas)

Commits de Integración Frontend/Backend (6 días atrás)

Commits de Desarrollo Inicial (4-9 semanas atrás)

Ramas Trabajadas

Ramas Principales

Rama main (Activa)

Rama backend (Remota)

Rama frontend (Remota)

Historial de Ramas

* d5ae005 (HEAD -> main, origin/main, origin/HEAD) Actualizar README.md
* 904120d Agregar imágenes al proyecto: img_70.png a img_99.png
* fa56a5b Mejorar manejo del carrito...
* e115c6a Mejorar la inicialización de la aplicación...
* 4b4ac1a Mejorar manejo de errores de API...
* 2cfe7cf Actualizar la página de productos...
* 0999945 Mejora el manejo de la autenticación del usuario...
* c8d6969 Mejorar el diseño y la funcionalidad de la página de inicio...
* 80f202a Mejorar el proceso de checkout...
* 736d7fa Corregir el carrito.js...
* 3ba8a8e Actualizar la configuración de expiración de JWT a 5 minutos
* 0789896 Agregar método getUserByEmail...
* a1c1a36 Corregir las importaciones en ReporteVentaService...
* 9383e9e Actualizar método createOrderFromCart...
* 0b6409c Actualizar método createOrderFromCart...
* 654bbc0 Actualizar método getCartByUser...
* ea4a136 Actualizar el estado de pedido a 'ENTREGADO'...
* 6755dde Agregar repositorio para gestionar direcciones de usuario
* b3f477c Agregar método para obtener el carrito de un usuario...
* 2448fac Agregar conversor para el enum OrderStatus...
* ab61cdf Actualizar los nombres de los estados de pedido a español...
* 737b8d1 Corregir nombre de tabla en OrderItem...
* ea8d7f4 Agregar atributos de dirección de envío...
* 56c7deb Agregar clase Direccion...
* 96fbca1 Corregir nombre de tabla en CartItem...
* 9c4da65 Agregar anotación JsonManagedReference...
* 01a82d1 Agregar validación de teléfono en UserRegistrationDTO
* d6d347e Agregar funcionalidad para crear pedidos...
* 7953adf Agregar endpoint para registrar nuevos usuarios
* 304239d SecurityConfig para mejorar la configuración de seguridad
* 79539c9 Agregar configuración de Jackson...
* a1a3b00 Agregar dependencia para Jackson Datatype Hibernate 6...
* dc9b2f0 Corregir la gestión de datos para integrar backend API...
* f6d59c3 Hacer funciones de actualización del carrito...
* 102a85f Eliminar archivos y configuraciones no utilizados...
* 35768ae Agregar configuración y servicios para la API...
* 7836c44 Agregar 120 imágenes al proyecto...
* 124373c Actualizar formulario de inicio de sesión...
* cd4b33a Eliminar archivos de configuración de VS Code y Angular...
* 76553d9 Actualizar método loadUserByUsername...
* f31bc15 Actualizar lógica de rol en la clase User...
* dbc074a Actualizar configuración CORS...
* 91f01b3 Agregar inicializador de datos...
*   ae349fd Johann Camiloaga - Merge pull request #2 from LIUNKS/backend
|\
| * 7fdcbd6 jgcamiloaga - UserService para usar la inyección de constructor...
| * 8b1030f jgcamiloaga - Eliminar importación innecesaria...
| * 14dea36 jgcamiloaga - Agregar clase ProductValidator...
| * c54b071 jgcamiloaga - ProductService para mejorar la funcionalidad...
| * ffdfe2c jgcamiloaga - OrderService para implementar IOrderService...
* | b63ccea jgcamiloaga - Mejoras en la clase User
* | b1df187 jgcamiloaga - Añadir clase ReporteVentaSemanal...
* | b923f83 jgcamiloaga - Actualizar clase Product...
* | c4b7d0f jgcamiloaga - Actualizar clase OrderItem...
* | 5ae6a28 jgcamiloaga - Actualizar clase Order...
* | 9485b32 jgcamiloaga - Añadir clase DetalleVentaSemanalProducto...
* | 317e377 jgcamiloaga - Renombrar tabla y columnas en CartItem...
* | 82341e3 jgcamiloaga - Renombrar tabla a "Carrito"...
* | 795200e jgcamiloaga - JwtResponseDTO...
* | 0d09a3a jgcamiloaga - Añadir controlador ReporteVentaController...
* | 025d61b jgcamiloaga - AuthController...
* | f0f2553 jgcamiloaga - Añadir Maven wrapper scripts...
* | b2ebcdd jgcamiloaga - Añadir archivo .gitignore...
* | 25160dc SugaAG - Update pom.xml
* | 6dba170 SugaAG - Add files via upload
* | 19f8615 SugaAG - Add files via upload
* | 28d2492 SugaAG - Add files via upload
* | bbef0d4 DeivisGasparr - Add files via upload
* | 9a25b67 jgcamiloaga - feat: Inicializar proyecto Angular FarmaYa en frontend

Desarrollo por Ramas

Rama backend - Desarrollo del API REST

Commits principales:

Rama frontend - Desarrollo de la Interfaz

Commits principales:

Rama main - Integración y Producción

Commits principales:

Gestión de Versiones

Versionado Semántico

El proyecto utiliza Maven con versionado semántico:

Control de Releases

Herramientas y Configuración

Archivo .gitignore

# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

# IDE
.idea/
*.iml
.vscode/
.settings/
.project
.classpath

# OS
.DS_Store
Thumbs.db

# Logs
logs/
*.log

# Database
*.db
*.sqlite

# Environment
.env
.env.local

Configuración Git

Métricas de Calidad

Frecuencia de Commits

Cobertura de Código

Problemas Identificados

  1. Falta de pruebas automatizadas: No hay directorio src/test/ con pruebas unitarias
  2. Sin tags de versión: No hay releases marcados con tags
  3. Commits grandes: Algunos commits incluyen múltiples cambios no relacionados
  4. Falta de CI/CD: No hay integración continua configurada

Recomendaciones de Mejora

Para Control de Versiones

  1. Implementar GitFlow:

    • Rama develop para integración
    • Ramas feature/* para nuevas funcionalidades
    • Ramas hotfix/* para corrección de bugs en producción
  2. Agregar tags de versión:

    git tag -a v1.0.0 -m "Release version 1.0.0"
    git push origin --tags
    
  3. Configurar GitHub Actions para CI/CD:

    • Tests automáticos
    • Build automático
    • Despliegue automático

Para Calidad de Código

  1. Agregar pruebas unitarias:

    • JUnit para backend
    • Jest para frontend
    • Cobertura mínima del 80%
  2. Code reviews: Implementar pull requests obligatorios

  3. Conventional commits: Estandarizar formato de mensajes

Conclusión

El proyecto FarmaYa tiene un control de versiones básico pero funcional. La estructura de ramas por componente facilita el desarrollo paralelo, y el historial de commits muestra un desarrollo activo. Sin embargo, faltan prácticas avanzadas como testing automatizado, CI/CD y versionado formal que mejorarían significativamente la calidad y mantenibilidad del proyecto.

Comandos Git Utilizados en el Análisis

# Número total de commits
git log --oneline | wc -l

# Listar ramas
git branch -a

# Contribuidores por commits
git shortlog -sn --no-merges

# Historial de commits
git log --oneline --graph --decorate

# Estado del repositorio
git status