Стало интересно посмотреть на число закоммиченных строк, решение было найдено на stackoverflow
Немного допилим, и получаем...
Статистика по одному автору:
git log --author="_Your_Name_Here_" --pretty=tformat: --numstat \
| gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
Статистика по всем авторам:
while read i; do git log --author="$i" --pretty=tformat: --numstat | { printf "$i: "; gawk ' { add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -; }; done < <(git shortlog -sne | sed 's/[^<]*<\([^>]*\)>/\1/' | sort -u)
Добавим немного форматирования в printf, для удобочитаемого вывода в виде таблицы, в sed добавим регулярки для откидывания неинформативных записей /^[0-9]\+$/d и удалим в email домены s/@.\+$// оставив только логины, отсортируем по количеству закоммиченных строк в обратном порядке и пронумеруем результат:
printf '\n%+8s%-22s%-14s%-16s%-16s\n' "N " "Author" "Added lines" "Removed lines" "Total difference"; while read i; do git log --author="$i" --pretty=tformat: --numstat | { printf "%-22s" $i; gawk ' { add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "%-14s%-16s%-16s\n",add,subs,loc }' -; }; done < <(git shortlog -sne | sed 's/[^<]*<\([^>]*\)>/\1/;/^[0-9]\+$/d;s/@.\+$//' | sort -u) | sort -k2 -rn | nl
Получим примерно такой результат:
N Author Added lines Removed lines Total difference
1 xxxxxxxxx 13494692 13494560 132
2 xxxxxxxx 8090827 7829892 260935
3 xxxxxxxx 361988 11762 350226
4 xxxxxxxxxx 254424 15293 239131
5 xxxxxxxxxxxx 161590 50013 111577
6 xxxxxxxx 82727 72846 9881
7 sa_zakharov 77518 27475 50043
8 xxxxxxxxx 70492 8776 61716
9 xxxxxxxxxx 52863 22576 30287
10 xxxxxxxxxx 39434 14333 25101
...
Сделаем вывод в CSV файл - изменим формат вывода в printf, перенаправим вывод в файл ~/Desktop/Projects/git-stat.csv
(echo "N,Author,Added lines,Removed lines,Total difference"; while read i; do git log --author="$i" --pretty=tformat: --numstat | { printf "$i, "; gawk ' { add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "%s, %s, %s\n",add,subs,loc }' -; }; done < <(git shortlog -sne | sed 's/[^<]*<\([^>]*\)>/\1/;/^[0-9]\+$/d;s/@.\+$//' | sort -u) | sort -k2 -rn | nl | sed 's/^\s\+//;s/^\([0-9]\+\)\s\+/\1,/;s/,\s\+/,/g' ) > ~/Desktop/Projects/git-stat.csv
Полученный CSV файл можно открыть в Excel / LibreOffice и др. программмах, отсортировать, построить диаграммы и т.п.
Так же, количество коммитов по пользователям:
git log --pretty=format:%ae \
| gawk -- '{ ++c[$0]; } END { for(cc in c) printf "%5d %s\n",c[cc],cc; }' | sort -k1 -rn
Cсылки:
[1] stackoverflow: Git - Is there a way to view the number of lines committed by Author?
[2] stackoverflow: Which Git commit stats are easy to pull?
Так же есть и другие средства для построения статистики по Git:
[3] GitStats project - генератор статистики по истории git, cмотрите каталог примеров статистики, сгенерированной для различных проектов.
[4] How to use GitStats in Windows: A step-by-step tutorial
[5] GitStats — замечательная статистика для git-репозитория
[6] LookAtGit is a program to extract commit statistics from a git source control repo. It may also be used with other repos provided you first convert them to git, for example, using git-svn.
[7] Git stats & graphs - визуализация истории git онлайн по json файлу сгенерированному утилитой gitstat
[8] Gitinspector is a statistical analysis tool for git repositories. The default analysis shows general statistics per author, which can be complemented with a timeline analysis that shows the workload and activity of each author. (проект очень давно не обновлялся)
Комментариев нет:
Отправить комментарий