2011-06-26 35 views
14

我想辦法列出所有的git作者認爲名單git的作者給定的提交

  1. 只是因爲給定的提交。
  2. 是獨一無二的。

這兩個很簡單,我已經看到這個在線的一些解決方案,大多數使用git log --format。但是我看不到符合附加要求:

  1. 按提交日期排序。所以如果約翰史密斯在亞倫·默勒爾面前犯下了錯誤,他的名字應該出現在我的面前(我是亞倫·默勒爾)。
  2. 尊重.mailmap。據我所知,只有git shortlog這樣做,它給了一堆額外的東西,我不想要的。但也許我錯了。或者也許那些比sed更方便的朋友,以及比我更喜歡的朋友只會使用它。

(順便說一句,我怎麼做降價重啓編號?)

我也想辦法通過姓氏來訂購吧,但是這是比較容易的。

回答

20

下面的格式說明將解決你的第二個問題:

%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{$_}++}' 
+0

謝謝。我其實不想要'<%aE>'部分,但這很容易刪除,而且很好理解。 – asmeurer

+0

最近50次提交的唯一作者: 'git log HEAD〜50 .. --format =「%aN <%aE>」--reverse |排序| uniq' –

+0

@cxreg,爲什麼在使用'sort -u'的時候使用perl腳本。即, 'git log .. --format =「%aN <%aE>」--reverse |排序-u'。從http://www.commandlinefu.com/commands/view/4519/list-all-authors-of-a-particular-git-project –

14

注意的人誰希望「全球統計」:

git shortlog -s -n -e 

提交作者的全球統計信息提交。