Sobre o projeto
`git-stats` é uma ferramenta de linha de comando escrita em Rust que analisa informações de `git log` para produzir estatísticas agregadas de commits. Ela lê o repositório diretamente usando `gitoxide`, uma implementação pura em Rust do git, evitando a necessidade do binário git.
## Recursos
- **Estatísticas agregadas**: Resume commits por autor, mostrando o número de commits, arquivos alterados, inserções, deleções e mudanças líquidas de linhas.
- **Faixas de revisão**: Suporta revisões únicas, faixas `A..B` e `A...B`, com endpoints especificados como refs, hashes curtos, `@{n}`, etc.
- **Filtragem**: Limita por autor (regex), intervalo de datas (`--since`, `--until`) e faixa de revisão.
- **Rastreamento de revisão**: Opcionalmente mostra revisores/testadores com base nos trailers git `Acked-by`, `Tested-by` e `Reviewed-by`.
- **Ordenação**: Ordena por qualquer coluna (autor, commits, arquivos, inserções, deleções, líquido) em ordem crescente ou decrescente.
- **Exibição de e-mail**: Opcionalmente mostra endereços de e-mail dos autores.
## Instalação
Instale a partir do crates.io:
```
cargo install git-stats --locked
```
Ou com `cargo-binstall` para binários pré-compilados:
```
cargo binstall git-stats
```
No Arch Linux, use os pacotes AUR `git-stats` (fonte) ou `git-stats-bin` (pré-compilado).
Com `mise`, instale um binário pré-compilado com verificação de checksum e proveniência SLSA:
```
mise use -g github:lukehsiao/git-stats
```
## Uso
```
Uso: git-stats [OPÇÕES] [faixa-de-revisão]
Argumentos:
[faixa-de-revisão] Mostra apenas commits na faixa de revisão especificada [padrão: HEAD]
Opções:
-e, --email Mostra o endereço de e-mail de cada autor
-r, --reviews Mostra quem revisou/testou commits com base nos trailers git
-s, --sort <ORDENAR> Por qual coluna ordenar [padrão: commits] [valores possíveis: author, commits, files, insertions, deletions, net]
--reverse Inverte a ordem de ordenação
-a, --author <AUTOR> Limita commits àqueles que correspondem a um padrão regex
--since <DESDE> Limita a commits mais recentes que uma data
--until <ATÉ> Limita a commits mais antigos que uma data
-h, --help Imprime ajuda
-V, --version Imprime versão
```
Exemplo de saída:
```
$ git stats -r origin..HEAD
Autor Commits Arquivos Alterados Inserções Deleções Líquido Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
Total 98 179 +2819 -1393 +1426
Revisor/Testador Commits
Luke Hsiao 1
```
## Notas
- **Faixas de revisão**: Apenas formas simples são suportadas; sintaxe exótica de gitrevisions(7) não é interpretada.
- **Filtragem por data**: Aceita ISO 8601, RFC 2822, timestamps unix e datas relativas como "2 semanas atrás". A filtragem é na data do committer.
- **Correspondência de autor**: Corresponde ao autor resolvido por mailmap, ao contrário de `git log --author` que usa cabeçalhos brutos.
- **Commits de merge**: Contam como commits, mas não contribuem com mudanças de linhas/arquivos.
- **Clones rasos**: Funcionam, mas as estatísticas podem diferir de clones completos; um aviso é impresso.
- **Submódulos**: Contados como arquivos alterados únicos, com pequenas divergências no tratamento de renomeações do git.
- **Contagens de linhas**: Do mecanismo de diff do gitoxide, podem diferir ligeiramente do git em alguns hunks.
- **Repositórios SHA-256**: Não suportados (limitação do gitoxide).
- **Codificações de commit**: Codificações não-UTF-8 não são convertidas; nomes de autores podem mostrar caracteres de substituição.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.