Покажите количество измененных строк на автора в мерзавце

я хочу видеть количество удаленной/добавленной строки, сгруппированных автором для данного ответвления в истории мерзавца. существует git shortlog -s который показывает мне количество фиксаций на автора. действительно ли там что-нибудь подобно для получения полного diffstat?

30
задан knittl 7 May 2010 в 08:41
поделиться

1 ответ

Начиная с , вопрос SO «Как подсчитать общее количество строк, измененных конкретным автором в репозитории Git?» не совсем удовлетворителен, commandlinefu имеет альтернативы (хотя и не для каждой ветки):

git ls-files | while read i; do git blame $i | sed -e 's/^[^(]*(//' -e 's/^\([^[:digit:]]*\)[[:space:]]\+[[:digit:]].*/\1/'; done | sort | uniq -ic | sort -nr

Он включает двоичные файлы, что нехорошо, поэтому вы можете (чтобы удалить действительно случайные двоичные файлы):

git ls-files | grep -v "\.\(pdf\|psd\|tif\)$"

(Примечание: как прокомментировал по trcarden , -x или - исключить вариант не работает.
Из git ls-files справочной страницы , git ls-files -x "* pdf" ... будет исключен только неотслеживаемое содержимое , если - другие или - игнорируемые были добавлены в команду git ls-files .)

Или:

git ls-files "*.py" "*.html" "*.css" 

], чтобы включить только определенные типы файлов.


Тем не менее, решение на основе « git log » должно быть лучше, например:

git log --numstat --pretty="%H" --author="Your Name" commit1..commit2 | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'

, но опять же, это для одного пути (здесь 2 фиксации), а не для все ветки по веткам.

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

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