2017-10-08 16 views
0

저는 다른 프로그래머와 팀을 구성하고 있으므로 git 저장소에서 저자 당 코드 줄 수를 얻어야합니다. 이는 작성자가 수정 한 행을 의미하지는 않습니다. 빈 행과 주석 행을 포함하기 때문입니다. 이상적으로는 필자는 특정 작성자 (자신의 경우 --author="BtheDestroyer")의 커밋 만 포함하는 새 분기를 만든 다음 cloc을 사용하여 주석 줄 수와 코드 줄 수를 따로 따로 얻을 수 있습니다. 즉 다른 커밋을 통해 빨리 감기 끝날 경우git 저장소에서 저자 당 코드 줄을 계산하십시오.

filepath: unmerged (commit-id-1) 
filepath: unmerged (commit-id-2) 
error: your index file is unmerged. 
fatal: cherry-pick failed 

나는 또한 확실하지 않다 : 그러나 나는, 나는 다음과 같은 오류의 톤을 얻을, 마지막 줄 동안

git log --author="BtheDestroyer" --format=%H > mycommits 
git checkout --orphan mycommits 
tac mycommits| while read sha; do git cherry-pick --no-commit ${sha}; done 

를 사용하려고했습니다 진행중. 어떤 아이디어?

답변

0

내 자신의 질문에 대답 :

내가 git blame를 사용하여 종료 및 소스 폴더에있는 다른 파일을 통해 루프에 Bourne 쉘 스크립트, grepcut를 사용하여 코드로 다시 변환 임시 파일로 출력을 구성, 그런 다음 cloc을 실행하십시오.

#!/bin/bash 
#Name of user to check 
# If you have multiple usernames, separate them with a space 
# The full name is not required, just enough to not be ambiguous 
USERS="YOUR USERNAMES HERE" 
#Directories 
SOURCE=../source 

for USER in $USERS 
do 
    #clear blame files 
    echo "" > $USER-Blame.h 
    echo "" > $USER-Blame.cpp 
    echo "" > $USER-Blame.sh 
    echo "Finding blame for $USER..." 
    #C++ files 
    echo " Finding blame for C++ files..." 
    for f in $SOURCE/*.cpp 
    do 
     git blame "$f" | grep "$USER" | cut -c 70- >> "$USER-Blame.cpp" 
    done 
    #Header files 
    echo " Finding blame for Header files..." 
    for f in $SOURCE/*.h 
    do 
     git blame "$f" | grep "$USER" | cut -c 70- >> "$USER-Blame.h" 
    done 
    #Shell script files 
    echo " Finding blame for shell script files..." 
    for f in ./GetUSERBlame.sh 
    do 
     git blame "$f" | grep "$USER" | cut -c 70- >> "$USER-Blame.sh" 
    done 
done 

for USER in $USERS 
do 
#cloc 
echo "Blame for all users found! Cloc-ing $USER..." 
cloc $USER-Blame.* --quiet 
#this line is for cleaning up the temporary files 
#if you want to save them for future reference, comment this out. 
rm $USER-Blame.* -f 
done 
:

여기에 비슷한 (! 내가 그렇게 적절하게 SOURCE을 변경 ./Blame/에 그것을 가지고) 할 싶은 사람을위한 내 쉘 스크립트입니다