Git: İstatistik Suçlama
Nasıl yapabilirim "kötüye kullanma" suçu (ya da biraz daha uygun fonksiyon ve/veya birlikte kabuk komutları) için bana bir istatistik ne kadar çizgiler (kod) şu anda depo kaynaklanan her committer?
Örnek Çıktı:
Committer 1: 8046 Lines
Committer 2: 4378 Lines
PS:) koşuyorum
CEVAP
Güncelleme
git ls-tree -r -z --name-only HEAD -- */*.c | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep "^author "|sort|uniq -c|sort -nr
Bazı şeyleri güncelledim.
tembeller için de kendi komut içine koy
#!/bin/bash
# save as i.e.: git-authors and set the executable flag
git ls-tree -r -z --name-only HEAD -- $1 | xargs -0 -n1 git blame \
--line-porcelain HEAD |grep "^author "|sort|uniq -c|sort -nr
bu bir yerde senin yolunda mağaza veya yolunu değiştir ve öyle kullanın
git authors '*/*.c' # look for all files recursively ending in .c
git authors '*/*.[ch]' # look for all files recursively ending in .c or .h
git authors 'Makefile' # just count lines of authors in the Makefile
Orijinal Cevap
Kabul cevabı işi yaparken çok yavaş.
$ git ls-tree --name-only -z -r HEAD|egrep -z -Z -E '\.(cc|h|cpp|hpp|c|txt)$' \
|xargs -0 -n1 git blame --line-porcelain|grep "^author "|sort|uniq -c|sort -nr
neredeyse anlıktır.
Dosyaların listesini almak için kullanabilirsiniz şu anda izleniyor
git ls-tree --name-only -r HEAD
Bu çözüm file
dosya tipini belirlemek için arama önler ve grep performansı artırmak için istedim uzantısı eşleştirmek için kullanır. Eğer tüm dosyalar dahil edilmelidir, hatta bu kaldırın.
grep -E '\.(cc|h|cpp|hpp|c)$' # for C/C files
grep -E '\.py$' # for Python files
eğer dosyaları kabukları için kötü olan boşluklar içeriyorsa kullanabilirsiniz:
git ls-tree -z --name-only -r HEAD | egrep -Z -z '\.py'|xargs -0 ... # passes newlines as '\0'
Bir xargs komutu arayın ve bağımsız dağıtmak için kullanabilirsiniz dosyaları (boru ile) bir listesini verin. Birden fazla dosya işlenecek komutlar sağlar -n1
obmit. Bu durumda git blame --line-porcelain
diyoruz ve her çağrı için tam olarak 1 değişken kullanıyoruz.
xargs -n1 git blame --line-porcelain
Biz o zaman filtre olaylar için çıktı "yazar" liste sıralama ve satır sayısı çift:
grep "^author "|sort|uniq -c|sort -nr
Not
Diğer cevaplar aslında sadece boşluklar içeren satırları filtrelemek.
grep -Pzo "author [^\n]*\n([^\n]*\n){10}[\w]*[^\w]"|grep "author "
Yukarıdaki komut satırlarını en az bir boşluk olmayan karakter içeren yazarlar baskı. Ayrıca boşluk olmayan ilk karakter olmadığı hatları hariç \w*[^\w#]
#
(birçok programlama dillerine yorum) maç kullanabilirsiniz.
Git geçmişi gösteren suçlama...
SVN Eclipse suçlama...
"On-line" (yineleyici) istat...
İyi bir matematik/istatistik Scala içi...
Basit bir istatistik - ortalama hesapl...