Для этого нет API. Сторонние приложения не имеют доступа к таким данным.
Вывод следующей команды должен быть достаточно простым для отправки в сценарий для суммирования итогов:
git log --author="<authorname>" --oneline --shortstat
Это дает статистику для всех коммитов в текущем HEAD . Если вы хотите добавить статистику в другие ветки, вам нужно будет передать их в качестве аргументов в git log
.
Для перехода к сценарию удаление даже однострочного формата может быть выполнено с пустым log, и, как прокомментировал Якуб Наребски, - numstat
является другой альтернативой. Он генерирует статистику по файлам, а не по строкам, но его еще проще анализировать.
git log --author="<authorname>" --pretty=tformat: --numstat
Для пользователей Windows можно использовать следующий сценарий пакетной обработки, который количества добавили/удалили строки для указанного автора
@echo off
set added=0
set removed=0
for /f "tokens=1-3 delims= " %%A in ('git log --pretty^=tformat: --numstat --author^=%1') do call :Count %%A %%B %%C
@echo added=%added%
@echo removed=%removed%
goto :eof
:Count
if NOT "%1" == "-" set /a added=%added% + %1
if NOT "%2" == "-" set /a removed=%removed% + %2
goto :eof
https://gist.github.com/zVolodymyr/62e78a744d99d414d56646a5e8a1ff4f
Вы хотите Git blame .
Есть опция --show-stats, чтобы напечатать некоторую, ну, статистику.
Чтобы подсчитать количество коммитов данным автором (или всеми авторами) в данной ветке, вы можете использовать git-shortlog ; особенно смотрите его - пронумерованные
и - сводные параметры
, например, при запуске в репозитории git:
$ git shortlog v1.6.4 --numbered --summary
6904 Junio C Hamano
1320 Shawn O. Pearce
1065 Linus Torvalds
692 Johannes Schindelin
443 Eric Wong
В дополнение к ответу Чарльза Бейли вы можете добавить -C
параметр для команд. В противном случае переименования файлов засчитываются как множество добавлений и удалений (столько, сколько в файле есть строк), даже если содержимое файла не было изменено.
Для иллюстрации, вот фиксация с большим количеством перемещаемых файлов из одного из моих проектов при использовании команды git log --oneline --shortstat
:
9052459 Reorganized project structure
43 files changed, 1049 insertions(+), 1000 deletions(-)
И здесь тот же самый коммит с использованием команды git log --oneline --shortstat -C
, которая обнаруживает копии и переименовывает файлы:
9052459 Reorganized project structure
27 files changed, 134 insertions(+), 85 deletions(-)
На мой взгляд, последнее дает более реалистичное представление о том, какое влияние оказывает человек участвовал в проекте, потому что переименование файла - это гораздо меньшая операция, чем написание файла с нуля.