Об этом проекте
`git-stats` — это инструмент командной строки, написанный на Rust, который анализирует информацию из `git log` для получения агрегированной статистики коммитов. Он читает репозиторий напрямую с помощью `gitoxide`, чистой реализации git на Rust, что исключает необходимость в бинарном файле git.
## Возможности
- **Агрегированная статистика**: Сводка по авторам с указанием количества коммитов, изменённых файлов, вставок, удалений и нетто-изменений строк.
- **Диапазоны ревизий**: Поддержка одиночных ревизий, диапазонов `A..B` и `A...B`, где конечные точки задаются как ссылки, короткие хеши, `@{n}` и т.д.
- **Фильтрация**: Ограничение по автору (регулярное выражение), диапазону дат (`--since`, `--until`) и диапазону ревизий.
- **Отслеживание рецензий**: Опциональный показ рецензентов/тестировщиков на основе git-трейлеров `Acked-by`, `Tested-by` и `Reviewed-by`.
- **Сортировка**: Сортировка по любой колонке (автор, коммиты, файлы, вставки, удаления, нетто) по возрастанию или убыванию.
- **Отображение email**: Опциональный показ адресов электронной почты авторов.
## Установка
Установка из crates.io:
```
cargo install git-stats --locked
```
Или с помощью `cargo-binstall` для предварительно собранных бинарных файлов:
```
cargo binstall git-stats
```
В Arch Linux используйте пакеты AUR `git-stats` (исходный код) или `git-stats-bin` (предварительно собранный).
С помощью `mise` установите предварительно собранный бинарный файл с проверкой контрольной суммы и происхождения SLSA:
```
mise use -g github:lukehsiao/git-stats
```
## Использование
```
Использование: git-stats [ОПЦИИ] [диапазон-ревизий]
Аргументы:
[диапазон-ревизий] Показывать только коммиты в указанном диапазоне ревизий [по умолчанию: HEAD]
Опции:
-e, --email Показать адрес электронной почты каждого автора
-r, --reviews Показать, кто рецензировал/тестировал коммиты на основе git-трейлеров
-s, --sort <СОРТ> По какой колонке сортировать [по умолчанию: commits] [возможные значения: author, commits, files, insertions, deletions, net]
--reverse Обратный порядок сортировки
-a, --author <АВТОР> Ограничить коммиты теми, которые соответствуют шаблону регулярного выражения
--since <С> Ограничить коммиты более новыми, чем дата
--until <ДО> Ограничить коммиты более старыми, чем дата
-h, --help Показать справку
-V, --version Показать версию
```
Пример вывода:
```
$ git stats -r origin..HEAD
Автор Коммиты Изменённые файлы Вставки Удаления Нетто Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
Итого 98 179 +2819 -1393 +1426
Рецензент/Тестировщик Коммиты
Luke Hsiao 1
```
## Примечания
- **Диапазоны ревизий**: Поддерживаются только простые формы; экзотический синтаксис gitrevisions(7) не интерпретируется.
- **Фильтрация по дате**: Принимает ISO 8601, RFC 2822, unix-временные метки и относительные даты, такие как "2 недели назад". Фильтрация выполняется по дате коммиттера.
- **Сопоставление авторов**: Сопоставляется с автором, разрешённым через mailmap, в отличие от `git log --author`, который использует необработанные заголовки.
- **Merge-коммиты**: Учитываются как коммиты, но не вносят изменений в строки/файлы.
- **Неполные клоны (shallow clones)**: Работают, но статистика может отличаться от полных клонов; выводится предупреждение.
- **Подмодули**: Учитываются как один изменённый файл, с небольшими расхождениями в обработке переименований git.
- **Подсчёт строк**: Из diff-движка gitoxide, может незначительно отличаться от git в некоторых фрагментах.
- **Репозитории SHA-256**: Не поддерживаются (ограничение gitoxide).
- **Кодировки коммитов**: Кодировки, отличные от UTF-8, не преобразуются; имена авторов могут содержать символы замены.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.