← Volver a todos los proyectos

Git Evolution

Visualiza cómo evolucionó tu código por lenguaje a lo largo del tiempo: un comando, un HTML interactivo listo para compartir.

Demo real: reporte generado ejecutando uv run main.py dentro de este propio portafolio.Abrir pantalla completa →

Características Principales

Pipeline Chain of Responsibility

Cinco pasos encadenados (Fetch → Parse → Accumulate → Plot → Render) que enriquecen un contexto compartido, fáciles de extender con nuevos handlers.

Zero-Config con uv (PEP 723)

Metadatos inline en el script permiten que uv resuelva Python y plotly al vuelo con `uv run main.py`, sin venvs ni instalación global.

Rendimiento sin Regex

El parseo de `git log --numstat` usa escaneo estricto de strings línea a línea para minimizar el costo de CPU en historiales largos.

Binario Standalone

`build.sh` orquesta PyInstaller en modo onefile con uv: un ejecutable autosuficiente que incrusta el template HTML y no requiere Python.

¿Cómo funciona?

  1. 1.Fetch: ejecuta `git log --numstat`, `git rev-parse` y `git rev-list` para capturar historial, nombre del repo y total de commits.
  2. 2.Parse: escanea el log línea a línea acumulando líneas añadidas/eliminadas por extensión y fecha.
  3. 3.Accumulate: convierte los deltas diarios en series acumulativas por extensión.
  4. 4.Plot: construye la figura Plotly oscura con rango de fechas explícito, evitando que el autorange colapse en repos pequeños.
  5. 5.Render: inyecta figura y metadatos en template.html produciendo git-evolution.html autónomo.

Explora el Código

Revisa la arquitectura completa del pipeline en el repositorio oficial.

Ver en GitHub