À propos du projet
`git-stats` est un outil en ligne de commande écrit en Rust qui analyse les informations de `git log` pour produire des statistiques agrégées de commits. Il lit directement le dépôt via `gitoxide`, une implémentation pure de git en Rust, évitant ainsi le besoin du binaire git.
## Fonctionnalités
- **Statistiques agrégées** : Résume les commits par auteur, affichant le nombre de commits, fichiers modifiés, insertions, suppressions et variations nettes de lignes.
- **Plages de révisions** : Prend en charge les révisions simples, les plages `A..B` et `A...B`, avec des points de terminaison spécifiés comme refs, hachages courts, `@{n}`, etc.
- **Filtrage** : Limite par auteur (regex), plage de dates (`--since`, `--until`) et plage de révisions.
- **Suivi des revues** : Affiche optionnellement les relecteurs/testeurs basés sur les trailers git `Acked-by`, `Tested-by` et `Reviewed-by`.
- **Tri** : Trie par n'importe quelle colonne (auteur, commits, fichiers, insertions, suppressions, net) en ordre ascendant ou descendant.
- **Affichage des emails** : Affiche optionnellement les adresses email des auteurs.
## Installation
Installez depuis crates.io :
```
cargo install git-stats --locked
```
Ou avec `cargo-binstall` pour des binaires précompilés :
```
cargo binstall git-stats
```
Sur Arch Linux, utilisez les paquets AUR `git-stats` (source) ou `git-stats-bin` (précompilé).
Avec `mise`, installez un binaire précompilé avec vérification de somme de contrôle et provenance SLSA :
```
mise use -g github:lukehsiao/git-stats
```
## Utilisation
```
Usage : git-stats [OPTIONS] [plage-de-révisions]
Arguments :
[plage-de-révisions] Affiche uniquement les commits dans la plage spécifiée [défaut : HEAD]
Options :
-e, --email Affiche l'adresse email de chaque auteur
-r, --reviews Affiche qui a relu/testé les commits basé sur les trailers git
-s, --sort <SORT> Colonne de tri [défaut : commits] [valeurs possibles : author, commits, files, insertions, deletions, net]
--reverse Inverse l'ordre de tri
-a, --author <AUTHOR> Limite les commits à ceux correspondant à un motif regex
--since <SINCE> Limite aux commits plus récents qu'une date
--until <UNTIL> Limite aux commits plus anciens qu'une date
-h, --help Affiche l'aide
-V, --version Affiche la version
```
Exemple de sortie :
```
$ git stats -r origin..HEAD
Auteur Commits Fichiers modifiés Insertions Suppressions Net Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
Total 98 179 +2819 -1393 +1426
Relecteur/Testeur Commits
Luke Hsiao 1
```
## Notes
- **Plages de révisions** : Seules les formes simples sont prises en charge ; la syntaxe exotique de gitrevisions(7) n'est pas interprétée.
- **Filtrage par date** : Accepte ISO 8601, RFC 2822, horodatages unix et dates relatives comme "il y a 2 semaines". Le filtrage se fait sur la date de commit.
- **Correspondance d'auteur** : Correspond à l'auteur résolu par mailmap, contrairement à `git log --author` qui utilise les en-têtes bruts.
- **Commits de fusion** : Comptent comme commits mais ne contribuent aucun changement de lignes/fichiers.
- **Clones superficiels** : Fonctionnent, mais les statistiques peuvent différer des clones complets ; un avertissement est affiché.
- **Sous-modules** : Comptés comme des fichiers modifiés uniques, avec de légères divergences par rapport à la gestion des renommages de git.
- **Comptages de lignes** : Issus du moteur de diff de gitoxide, peuvent différer légèrement de git sur certains hunks.
- **Dépôts SHA-256** : Non pris en charge (limitation de gitoxide).
- **Encodages de commits** : Les encodages non UTF-8 ne sont pas convertis ; les noms d'auteurs peuvent afficher des caractères de remplacement.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.