주어진 git 저장소의 결함 파일의 관계를 논의하는 대학 과제가 있습니다. 다음 형식으로 git 로그를 생성하려고 합니다.
file name + number of commits + current word count + number of contributors
git log --name-only --pretty=format: | sort | uniq -c >results.txt
지금까지 얻은 최고의 결과는number of commits + file name
답변1
이 스크립트는 다음을 수행합니다.
#!/bin/bash
# Invoke as repodetails.bash /path/to/git/repo
git_repo_path=$1
cd $git_repo_path
echo "" > output.txt
# Get a list of tracked files in the current repository.
file_list=$(git ls-tree -r HEAD --name-only)
for file in $file_list
do
# Get the count of commits by listing the commit history of the file.
commit_count=$(git log --oneline -- "$file" | wc -l)
# Use wc on the file to get the word count.
word_count=$(git show "HEAD:$file" | wc -w)
# Use the summary option of git shortlog to get a list of contributors.
author_count=$(git shortlog -s $file | wc -l)
echo "$file $commit_count $word_count $author_count" >> output.txt
done
예를 들어 GitHub에서 다음 저장소를 복제했습니다.https://github.com/GitSquared/edex-ui/opt 디렉터리로 이동합니다. 그런 다음 스크립트 를 ./repodetails.bash /opt/edex-ui
.output.txt
/opt/edex-ui
output.txt 파일에는 다음 형식의 필수 세부정보가 포함되어 있습니다.
src/classes/modal.class.js 2 165 1
src/classes/netstat.class.js 8 305 1
src/classes/ramwatcher.class.js 5 257 2
src/classes/sysinfo.class.js 6 291 1
src/classes/terminal.class.js 31 906 2
src/classes/toplist.class.js 2 95 1
src/classes/updateChecker.class.js 4 190 1
src/package-lock.json 55 685 3
src/package.json 68 65 5
src/ui.html 20 161 1