2016-10-03 4 views
1

Lassen Sie mich sagen, ich möchte zählen, wie viele if Aussagen wurden committed und dann gruppieren sie nach Autor, wie würde ich das tun?Suche git Geschichte und Gruppe nach Autor

Beispiel von dem, was ich tun möchte:

git count-by-author "if (" 

245 Author A 
199 Author B 
    20 Author C 

Ich bin hauptsächlich in der Anzahl der if s interessiert eingeführt, und nicht if Aussagen geändert, wenn das möglich ist.

Antwort

1

Es gibt keine reine git Lösung, aber Sie können folgende Bash-Skript verwenden solche Statistiken zu erhalten:

for sha in $(git log --format=%H); do 
    author="$(git show --format=%an $sha | head -n1)" 

    removed_if_statements=$(git show $sha | grep -E '^\-(.*)?if \(' | wc -l) 
    added_if_statements=$(git show $sha | grep -E '^\+(.*)?if \(' | wc -l) 

    delta=$(($added_if_statements - $removed_if_statements)) 

    if [ $delta -gt 0 ]; then 
    for x in $(seq 1 $delta); do 
     echo $author 
    done 
    fi 
done | sort | uniq -c | sort -rg 
+0

Nice! musste nur -g zum letzten 'sort' hinzugefügt werden, um die Dinge korrekt zu sortieren (8 wurde zB vor 1100 sortiert) – oskbor

+0

Sie haben recht, danke – qzb

+0

auch, diese Zeile scheint zsh' for x in {1 .. $ Delta}; do ' – oskbor