2016-10-03 2 views
1

if 진술이 몇 개 있는지를 계산하고 작성자별로 그룹화하려면 어떻게해야합니까? 내가하고 싶은 것에저자에 의한 git 히스토리 및 그룹 검색

예 :이 가능한 경우

git count-by-author "if (" 

245 Author A 
199 Author B 
    20 Author C 

나는 주로 소개 if의 수에 관심과 if 문을 수정하지 않다.

답변

1

는 더 순수 자식 솔루션이 없다, 그러나 당신은 통계를 얻기 위해 다음의 bash 스크립트를 사용할 수 있습니다 :

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

니스! 일을 올바르게 정렬하기 위해 -g를 추가해야했습니다. (예 : 8은 1100보다 먼저 정렬되었습니다.) – oskbor

+0

감사합니다. – qzb

+0

도 감사합니다.이 줄에는 x에 {1 .. $ 델타}; do' – oskbor