Sobre el proyecto
`git-stats` es una herramienta de línea de comandos escrita en Rust que analiza la información de `git log` para producir estadísticas agregadas de commits. Lee el repositorio directamente usando `gitoxide`, una implementación pura de Rust de git, evitando la necesidad del binario de git.
## Características
- **Estadísticas agregadas**: Resume los commits por autor, mostrando el número de commits, archivos modificados, inserciones, eliminaciones y cambios netos de líneas.
- **Rangos de revisión**: Soporta revisiones individuales, rangos `A..B` y `A...B`, con extremos especificados como refs, hashes cortos, `@{n}`, etc.
- **Filtrado**: Limita por autor (regex), rango de fechas (`--since`, `--until`) y rango de revisión.
- **Seguimiento de revisiones**: Opcionalmente muestra revisores/verificadores basados en los trailers de git `Acked-by`, `Tested-by` y `Reviewed-by`.
- **Ordenamiento**: Ordena por cualquier columna (autor, commits, archivos, inserciones, eliminaciones, neto) en orden ascendente o descendente.
- **Visualización de correos**: Opcionalmente muestra las direcciones de correo de los autores.
## Instalación
Instala desde crates.io:
```
cargo install git-stats --locked
```
O con `cargo-binstall` para binarios precompilados:
```
cargo binstall git-stats
```
En Arch Linux, usa los paquetes AUR `git-stats` (fuente) o `git-stats-bin` (precompilado).
Con `mise`, instala un binario precompilado con verificación de checksum y procedencia SLSA:
```
mise use -g github:lukehsiao/git-stats
```
## Uso
```
Uso: git-stats [OPCIONES] [rango-de-revisión]
Argumentos:
[rango-de-revisión] Muestra solo commits en el rango de revisión especificado [por defecto: HEAD]
Opciones:
-e, --email Muestra la dirección de correo de cada autor
-r, --reviews Muestra quién revisó/verificó los commits basado en trailers de git
-s, --sort <SORT> Columna por la que ordenar [por defecto: commits] [valores posibles: author, commits, files, insertions, deletions, net]
--reverse Invierte el orden de clasificación
-a, --author <AUTHOR> Limita los commits a aquellos que coinciden con un patrón regex
--since <SINCE> Limita a commits más recientes que una fecha
--until <UNTIL> Limita a commits más antiguos que una fecha
-h, --help Imprime ayuda
-V, --version Imprime versión
```
Ejemplo de salida:
```
$ git stats -r origin..HEAD
Autor Commits Archivos Modificados Inserciones Eliminaciones Neto Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
Total 98 179 +2819 -1393 +1426
Revisor/Verificador Commits
Luke Hsiao 1
```
## Notas
- **Rangos de revisión**: Solo se soportan formas simples; la sintaxis exótica de gitrevisions(7) no se interpreta.
- **Filtrado por fecha**: Acepta ISO 8601, RFC 2822, marcas de tiempo unix y fechas relativas como "hace 2 semanas". El filtrado se basa en la fecha del committer.
- **Coincidencia de autor**: Coincide con el autor resuelto por mailmap, a diferencia de `git log --author` que usa encabezados crudos.
- **Commits de fusión**: Cuentan como commits pero no contribuyen con cambios de líneas/archivos.
- **Clones superficiales**: Funcionan, pero las estadísticas pueden diferir de los clones completos; se imprime una advertencia.
- **Submódulos**: Se cuentan como archivos modificados individuales, con divergencias menores en el manejo de renombres de git.
- **Conteos de líneas**: Del motor de diff de gitoxide, pueden diferir ligeramente de git en algunos hunks.
- **Repositorios SHA-256**: No soportados (limitación de gitoxide).
- **Codificaciones de commits**: Las codificaciones no UTF-8 no se convierten; los nombres de autor pueden mostrar caracteres de reemplazo.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.