Git'teki bir projedeki tüm geliştiricileri listele


210

Git'te bir projeye katkıda bulunan tüm kullanıcıları (taahhüt eden kullanıcılar) listelemek mümkün mü?

Ek istatistikler var mı?

Yanıtlar:


395

Tüm kullanıcıları ve e-postaları ve CURRENT kolundaki taahhüt sayısını göstermek için:

git shortlog --summary --numbered --email

Ya da sadece:

git shortlog -sne

Tüm şubelerden (yalnızca geçerli şubede bulunanları değil) kullanıcıları göstermek için --allbayrak eklemeniz gerekir :

git shortlog -sne --all

3
Bu komutu bir komut dosyasından veya "ant" gibi bir şeyden kullanmak istiyorsanız, bir düzeltme belirtmeniz gerektiğini veya hiçbir şey vermediğini unutmayın. Mevcut revizyon için KAFA kullanabilirsiniz:git shortlog -sn HEAD
Majenko

59
E-posta adreslerini de almak için ekleyin -e.
mic_e

10
Tüm şubelerden gelen kullanıcıları göstermek için (sadece mevcut şubede bulunanları değil) --allbayrak eklemelisin
Gian Marco

3
taahhütlerin sayısını istemezsem ne olur?
Wearybands

1
Bu, tüm proje yerine belirli bir dosyaya kimin dokunduğunu kontrol etmek için de harika. git shortlog --summary --numbered <pathToFile>
jxramos

40

Listede daha spesifik olmak istiyorsanız (benzersiz yorumcu ve yazarların bir listesini bulun), şunları kullanabilirsiniz git log:

git log --pretty="%an %ae%n%cn %ce" | sort | uniq
  • %an yazar adı
  • %ae yazar e-postası
  • %n Yeni hat
  • %cn komünist adı
  • %ce committer email

Diğer yer tutucular, 'ın oldukça basılı belgelerinde açıklanmaktadırgit log .


Bence %n(hat tabanlı) ile çok fazla bir anlam ifade sortetmiyor, değil mi? Satır, yazar / değiştirici adını / e-postasını ayrı satırlarda günlüğe kaydeder, ancak tüm çıktıyı sıralar ...
ssc

@ssc committer email, yazar emailinden farklı olabilir. % n yeni çizginin bu farklılıkları bulması için
Guillaume Vincent

19

Bunu deneyebilirsiniz:

git log | grep Author: | sort | uniq

1
Bu, .mailmap dosyasını güncellemek isteyen herkes için en kullanışlı komuttur!
Ahi Tuna

7

(taahhütte bulunan kullanıcılar)

Not: varsayılan olarak git shortloggruplar yazarlar tarafından taahhüt edilir .

Bunları komisyonculara göre gruplandırmanız gerekiyorsa Git 2.12'ye (1. Çeyrek 2017) ihtiyacınız olacaktır.

git shortlog -snc

Bkz. Taahhüt: 03f4082 (16 Aralık 2016), Jeff King ( peff) . Linus Torvalds ( ) tarafından fbfda15 (11 Eki 2016)
bölümüne bakınız . (Göre Birleştirilmiş Junio Cı Hamano - - içinde ad1b4e2 tamamlamatorvalds
gitster , 27 Aralık 2016)

Linus Torvalds'ın kendisi bu özelliği tanıttı:

shortlog: banliyö bilgilerine göre gruplandır

Bazı durumlarda, taahhütleri yazar tarafından değil, bunun yerine komisyoncu tarafından gruplandırmak isteyebilirsiniz.

Örneğin linux-next, şu anki birleştirme penceresinde hala eksik olanı aramak istediğimde, kimin yama yazdığı umurumda değil.git tree geldiğini, genellikle "kimin işlediğini" o".

Bu nedenle git shortlog'un gruplandırmaya geçiş yapmak için " -c" veya " --committer" seçeneğini kullanmasını sağlayın .



1

Henüz kendim test edemedim, ancak Git deposu için proje istatistikleri için gerçekten güzel görünüyor: https://github.com/visionmedia/git-extras

binFarklı komut dosyalarını görmek için kataloğa göz atın .

Örneğin, git-countkomut dosyası (her komisyoncu için taahhüt sayısı):

git shortlog -n $@ | grep "):" | sed 's|:||'

1
git shortlog -ns daha az saçma görünüyor
TomDLT

@TomDLT Bu 4 yıl önce gönderdiğimden beri git-extras'taki bu örnek komut dosyası değişti. Ama bence git-extras gibi projelerin veya insanların dotfiles projelerinin git betiklerine bakmak benim tavsiyem. İlginç git komutları arıyorsanız Gary Bernhardt'ın dotfiles'ını da tavsiye ederim: github.com/garybernhardt/dotfiles/tree/master/bin
Daniel Lee

1

@ Pedro-nascimento, @mic_e ve diğerlerinin harika yanıtları sorunu zaten çözmektedir.

Ayrıca, aşağıdaki satırı .gitconfig

contributors = shortlog -e --summary --numbered

veya kabuk tipinde

git config --global alias.contributors 'shortlog -e --summary --numbered'

Ve bundan sonra şunları başlatabilirsiniz: git contributors


1
muhtemelen bunu belirledikten sonra basitçe arayabileceğiniz bir not eklemeniz gerekirgit contributors
lohfu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.