Список авторов в git, так как данный коммит
Мне нужен способ перечислить всех авторов git, которые
- Только после данной фиксации.
- Уникален.
Эти два являются легкими, и я видел некоторые решения для этого онлайн, большинство из которых использовало git log --format
. Но ни один из них, который я видел, не соответствует дополнительным требованиям:
- Заказывается по дате фиксации. Поэтому, если Джон Смит покончил с Аароном Меурером, его имя должно появиться перед моим (я Аарон Меурер).
- Уважает .mailmap. Насколько я могу судить, только
git shortlog
делает это, и это дает кучу лишних вещей, которые я не хочу. Но, возможно, я ошибаюсь. Или, может быть, те из вас, кто более удобен с sed
и друзьями, чем я, просто использовал бы это.
(кстати, как заставить Markdown не перезапускать нумерацию?)
Я также хочу, чтобы заказать его по имени, но это относительно легко.
Ответы
Ответ 1
Следующие спецификаторы формата будут решать вашу вторую проблему:
% aN: имя автора (с учетом .mailmap)
% aE: электронная почта автора (с учетом .mailmap)
% cN: имя коммиттера (с учетом .mailmap)
% cE: committer email (уважаемый .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{$_}++}'
Ответ 2
Примечание для людей, которые хотят "global stat":
git shortlog -s -n -e
Дайте глобальную статистику, зафиксированную автором.