2016-12-07 3 views
2

Учитывая конкретный файл в репозитории git, как мне узнать, кто является наиболее частым коммиттером в этом файле?Поиск наиболее частого коммиттера в конкретном файле

+0

Что означает «частый» здесь? времена, которые совершают больше, чем любые другие или линии? –

+0

Хороший вопрос. Не могли бы вы разместить оба? –

ответ

9

Вы можете использовать git shortlog для этого:

git shortlog -sn -- path/to/file 

Это выведет список авторов на пути, упорядоченного и предваряется фиксации счета.

Обычно эта команда используется для быстрого сводки изменений, например. для генерации журнала изменений. С -s аннотации изменений подавляются, оставляя только имена авторов. В сочетании с -n результат сортируется по счету фиксации.

Конечно, вместо пути к файлу вы также можете использовать путь к каталогу, чтобы посмотреть на коммиты на этот путь. И если вы полностью отойдете от пути, git shortlog -sn предоставит вам статистику по всему репозиторию.

+2

Отличный ответ, лучше, чем у меня :), но вам, вероятно, потребуется дополнительное '--follow' для обнаружения переименований. –

+0

Спасибо! Как насчет количества строк? –

+0

@LeoNatan Это другой вопрос, и немного сложнее; вы можете проанализировать вывод из 'git log -shortstat', аналогичный ответу Patryk. Но проверьте [этот вопрос] (http://stackoverflow.com/questions/2787253/show-number-of-changed-lines-per-author-in-git) для получения дополнительных идей. – poke

1
$ git log --follow <file> | grep "Author: " | sort | uniq -c | sort 

Некоторые пояснения:

git log --follow <file> - предел журнала для конкретного файла, следовать через все переименований этого файла

grep "Author:" | sort - брать только линии с авторами и авторами группы вместе

uniq -c | sort - подсчитывать авторов в группах и сортировать их снова, поэтому наиболее часто встречающийся в первой строке

:)

1
git log --format="%cn" | sort | uniq -c | sort -nr 

Получить имя участника каждой фиксации, группы и счетчика, отсортировать по убыванию.

1

Вы можете выполнить короткий вывод в соответствии с количеством коммитов на пользователя.

$ git shortlog -sen <file/path> 

Here, 
-s for commit summary 
-e for email 
-n short by number instead of alphabetic order 

// more info 
$ git shortlog --help 
Смежные вопросы