Список авторов в git с момента данного коммита - PullRequest
18 голосов
/ 26 июня 2011

Я хочу указать список всех авторов git, которые

  1. Только после данного коммита.
  2. Уникален.

Эти два способа просты, и я видел некоторые решения для этого в Интернете, большинство из которых используют git log --format. Но ни один из тех, что я видел, не отвечает дополнительным требованиям:

  1. Упорядочено по дате фиксации. Поэтому, если Джон Смит совершит предвестие перед Аароном Морером, его имя должно появиться перед моим (я - Аарон Морер).
  2. Уважает .mailmap. Насколько я могу сказать, только git shortlog делает это, и это дает кучу дополнительных вещей, которые я не хочу. Но, возможно, я ошибаюсь. Или, может быть, те из вас, кто более удобен с sed и друзьями, чем я, просто воспользуются этим.

(кстати, как сделать так, чтобы Markdown не перезапускал нумерацию?)

Я также хочу заказать его по фамилии, но это относительно просто.

Ответы [ 2 ]

25 голосов
/ 06 марта 2015

Примечание для людей, которые хотят "глобальную статистику":

git shortlog -s -n -e

Дайте глобальную статистику коммитов по автору.

20 голосов
/ 26 июня 2011

Следующие спецификаторы формата решат вашу вторую проблему:

% aN: имя автора (относительно .mailmap)
% aE: электронная почта автора (относительно .mailmap)
% cN: имя коммиттера (относительно .mailmap)
% cE: электронная почта коммиттера (с учетом .mailmap)

Так что, исключая дубликат авторской части, вы хотите что-то вроде

git log <commit>.. --format="%aN <%aE>" --reverse

Я подозреваю, что вы могли бы передать это через что-то, что делает дедупликацию на основе хеш-таблицы, perl oneliner будет тривиальным:

git log <commit>.. --format="%aN <%aE>" --reverse | perl -e 'my %dedupe; while (<STDIN>) { print unless $dedupe{$_}++}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...