Как подсчитать общее количество строк, измененных конкретным автором в репозитории Git?

Для этого нет API. Сторонние приложения не имеют доступа к таким данным.

408
задан Peter Perháč 25 October 2017 в 21:26
поделиться

5 ответов

Вывод следующей команды должен быть достаточно простым для отправки в сценарий для суммирования итогов:

git log --author="<authorname>" --oneline --shortstat

Это дает статистику для всех коммитов в текущем HEAD . Если вы хотите добавить статистику в другие ветки, вам нужно будет передать их в качестве аргументов в git log .

Для перехода к сценарию удаление даже однострочного формата может быть выполнено с пустым log, и, как прокомментировал Якуб Наребски, - numstat является другой альтернативой. Он генерирует статистику по файлам, а не по строкам, но его еще проще анализировать.

git log --author="<authorname>" --pretty=tformat: --numstat
292
ответ дан 22 November 2019 в 23:22
поделиться

Для пользователей 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

0
ответ дан 22 November 2019 в 23:22
поделиться

Вы хотите Git blame .

Есть опция --show-stats, чтобы напечатать некоторую, ну, статистику.

0
ответ дан 22 November 2019 в 23:22
поделиться

Чтобы подсчитать количество коммитов данным автором (или всеми авторами) в данной ветке, вы можете использовать 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
88
ответ дан 22 November 2019 в 23:22
поделиться

В дополнение к ответу Чарльза Бейли вы можете добавить -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(-)

На мой взгляд, последнее дает более реалистичное представление о том, какое влияние оказывает человек участвовал в проекте, потому что переименование файла - это гораздо меньшая операция, чем написание файла с нуля.

13
ответ дан 22 November 2019 в 23:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: