2011-06-26 28 views
14

Tôi muốn có một cách để liệt kê tất cả các tác giả git rằngDanh sách các tác giả trong git từ một định cam kết

  1. là chỉ từ một định cam kết.
  2. Là duy nhất.

Hai điều này thật dễ dàng và tôi đã thấy một số giải pháp cho trực tuyến này, sử dụng nhiều nhất git log --format. Nhưng không có gì tôi thấy phù hợp với các yêu cầu bổ sung:

  1. Được đặt hàng trước ngày cam kết. Vì vậy, nếu John Smith cam kết trước Aaron Meurer, tên của anh ta sẽ xuất hiện trước mặt tôi (tôi là Aaron Meurer).
  2. Tôn trọng bản đồ. Theo như tôi có thể nói, chỉ git shortlog thực hiện việc này và nó mang lại một loạt các nội dung bổ sung mà tôi không muốn. Nhưng có lẽ tôi sai. Hoặc có lẽ những người bạn của những người có nhiều tiện dụng với sed và bạn bè hơn tôi sẽ chỉ sử dụng điều đó.

(bằng cách này, làm thế nào để làm cho Markdown không khởi động lại việc đánh số?)

Tôi cũng muốn có một cách để đặt nó theo tên cuối cùng, nhưng điều này là tương đối dễ dàng.

Trả lời

20

Các specifiers định dạng sau sẽ giải quyết mối quan tâm thứ hai của bạn:

% An: tác giả tên (tôn trọng .mailmap)
% Ae: tác giả email (tôn trọng .mailmap)
% cN: Tên committer (tôn trọng. mailmap)
% CE: committer email (tôn trọng .mailmap)

Vì vậy, chiết khấu phần trùng lặp tác giả, bạn muốn một cái gì đó giống như

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

tôi nghi ngờ bạn có thể ống thông qua một cái gì đó mà không một bảng băm dựa pc, một oneliner perl sẽ là tầm thường:

git log <commit>.. --format="%aN <%aE>" --reverse | perl -e 'my %dedupe; while (<STDIN>) { print unless $dedupe{$_}++}' 
+0

Cảm ơn. Tôi thực sự không muốn phần '<%aE>', nhưng thật dễ dàng để loại bỏ, và điều đó rất hữu ích. – asmeurer

+0

Tác giả duy nhất trong 50 cam kết cuối cùng: 'git log HEAD ~ 50 .. --format ="% aN <%aE> "--quay lại | sắp xếp | uniq' –

+0

@cxreg, tại sao sử dụng tập lệnh perl khi bạn có thể sử dụng 'sort -u'. tức là, 'git log .. --format = "% aN <%aE>" --quay lại | sắp xếp -u'. từ http://www.commandlinefu.com/commands/view/4519/list-all-authors-of-a-particular-git-project –

14

Lưu ý cho những người muốn "stat toàn cầu":

git shortlog -s -n -e 

Cung cấp cho các số liệu thống kê toàn cầu cam kết của tác giả.

Các vấn đề liên quan