Skip to content

1NepuNep1/gitfame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gitfame

gitfame — консольная утилита для подсчёта статистик авторов Git-репозитория.

Описание

Утилита собирает по заданному коммиту информацию по всем строкам файлов (или их подмножеству) и вычисляет для каждого автора:

  • Количество строк — число строк, последний коммит, изменивший эти строки, принадлежит автору.
  • Количество коммитов — уникальных коммитов, которые вносят изменения в отслеживаемые строки или пустые файлы.
  • Количество файлов — число файлов, содержащих строки, соотнесённые с коммитами автора.

Результаты представлены в виде таблички (или в форматах CSV, JSON, JSON Lines) и сортируются по одной из трёх метрик: lines, commits или files.

Инсталляция

  1. Склонировать репозиторий:

    git clone <URL репозитория>
    cd gitfame
  2. Установить бинарь:

    go install ./cmd/gitfame/...
  3. Добавить GOPATH/bin в PATH (если ещё не сделано):

    export PATH=$GOPATH/bin:$PATH

После этого команда gitfame будет доступна из любой директории.

Быстрый старт

gitfame --repository=. --extensions='.go,.md' --order-by=lines

Пример вывода:

Name                   Lines Commits Files
Joe Tsai               12154 92      49
colinnewell            130   1       1
...                    ...   ...    ...

Флаги

Флаг Описание По умолчанию
--repository Путь до Git-репозитория . (текущая директория)
--revision Указатель на коммит (SHA, HEAD, теги и т.д.) HEAD
--order-by Ключ сортировки: одна из lines, commits, files. При равенстве — лексикографически меньший автор lines,commits,files
--use-committer Считать в качестве автора не 'Author', а 'Committer' false
--format Формат вывода: tabular, csv, json, json-lines tabular
--extensions Фильтр по расширениям файлов, через запятую, например: .go,.md (все файлы)
--languages Фильтр по языкам (go, markdown и т.д.) на основе configs/language_extensions.json. Неизвестные языки игнорируются. (все языки)
--exclude Glob-паттерны для исключения файлов, через запятую: foo/*,bar/*.go (нет)
--restrict-to Glob-паттерны для включения файлов: учитываются только те, что соответствуют хотя бы одному паттерну (нет)
--progress Включить отображение прогресса (печатается в stderr) false

Примеры использования

  • Сосчитать статистику по всем .go и .md файлам в текущем репозитории, сортируя по числу строк:

    gitfame --extensions='.go,.md' --order-by=lines
  • Вывести результат в формате JSON:

    gitfame --format=json
  • Подсчитать только для файлов Go, исключив тесты и примеры:

    gitfame --extensions='.go' --exclude='*_test.go,examples/*'

Тесты

go test -v ./gitfame/test/integration/...

Для интеграционных тестов используются Git-бандлы (.bundle) из test/integration/testdata/bundles. Чтобы создать свой бандл:

git bundle create my.bundle --all

Клонирование в пустую директорию:

git clone /path/to/my.bundle .

About

📊 A CLI tool to compute author statistics (lines, commits, files) in a Git repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages