2011-06-14 21 views
110

Git'in, tüm kullanıcılar için tek bir kullanıcı tarafından değiştirilen tüm dosyaların bir listesini vermesini istiyorum.Bir kullanıcının değiştirdiği tüm dosyaları söyleyebilmem için git alabilir miyim?

Benim özel kullanımım, raylar projesinde bir rubinin i18n'inde yer aldığım ve hangi dosyaların daha önce yapıldığını ve hangi dosyaların yapılması gerektiğini bilmek istiyoruz. Söz konusu kullanıcılar, kod tabanının geri kalanında değil, sadece i18n üzerinde çalışma yapmışlardır. Bu yüzden bilgi hepsinde olmalı, ama nasıl çıkacağından emin değilim.

cevap

82

Bu tek yol değildir, ama çalışır: bir satır olarak,

git log --pretty="%H" --author="authorname" | 
    while read commit_hash 
    do 
     git show --oneline --name-only $commit_hash | tail -n+2 
    done | sort | uniq 

Veya:

git log --pretty="%H" --author="authorname" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq 
+2

Bu çok verimsiz. Git döngüsünde çağrı yapmak gereksizdir, cevabımı aşağıya bakın. – h0tw1r3

+29

Her zaman bir kediyi ciltlemek için birden fazla yol vardır. Başımın tepesinden çıkmış olduğum şey buydu ve işe yaradı. Verimlilik burada pek önemli değil. Zaten düşüş için teşekkürler. –

+2

Bunu sadece birkaç bin taahhütle bir repoda kullandım ve bu anlıkdı. – Jake

5

git log --stat --committer=<user> ürününü deneyin. Sadece kullanıcının adını --committer= seçeneğine koyun (veya uygun şekilde --author= kullanın).

Bu, dosya başına tüm dosyaları tükürecektir, dolayısıyla büyük olasılıkla bazı çoğaltma olacaktır.

137

Bu, dosyaların basit bir liste verecektir, başka bir şey:

git log --no-merges --author="Pattern" --name-only --pretty=format:"" | sort -u 

Anahtar - gerektiğinde - vericiyi çalıştırın.

+1

'- Sadece-isim' çıktıların dosya isminden başka bir şey yapmasını sağladı. Bu gerçek göz önüne alındığında, '--stat' ve' --pretty = format: "" 'seçenekleri nelerdir? Onları çıkarır mısınız? – Jonah

+1

@Jonah --pretty = format: "" gerekli. Cevabı ben düzenledim. –

+1

bir küçük aksaklık olsa da harika çalışıyor: çıktı başlangıcında boş bir bağlantı üretiyor, bu da sonuçların 'wc -l' ile dosya sayısını 1'e çıkarmak olduğunu gösteriyor. – joachim

İlgili konular