Git Statistics
工具 hercules go,维护良好,较为复杂,可以尝试 https://github.com/src-d/hercules gitinspector Python 但是最后一次维护是Oct 19, 2020,不能在py3下运行,可以尝试 https://github.com/ejwa/gitinspector git-stats 合并程序是二进制,输出是js,不好改造 https://github.com/IonicaBizau/git-stats git-quick-stats written by shell(不太好改造),持续有维护,可以尝试 https://github.com/arzzen/git-quick-stats#macos-homebrew brew install git-quick-stats You can use the Docker image provided: Build: docker build -t arzzen/git-quick-stats . Run interactive menu: docker run --rm -it -v $(pwd):/git arzzen/git-quick-stats Docker pull command: docker pull arzzen/git-quick-stats docker repository docker run --rm -it -e _GIT_SINCE="2017-01-20" -v $(pwd):/git arzzen/git-quick-stats -j 统计 代码量 不鼓励卷这个绩效,需要自取 #!/bin/bash # README # 1. 找一个目录git clone $repos 中定义的目录 # 2. 查看各个仓库自己提交过的作者名 # 3. branches 规则 ${repo}_branches,合并过的分支请选择最新的即可,反着会重复统计 repos=("python" "php" "go") authors=("peter" "pe") start_date="2024-01-01" end_date="2024-03-31" python_branches=("dev" "master") php_branches=("dev", "master") go_branches=("master" "dev") # 目前是按格式匹配,根据需要调整 include="-- \"*.py\" \"*.go\" \"*.php\" \"*.sh\"" # 默认排除了 go 的 vendor 目录,其他根据需要调整 exclude="':(exclude)vendor/'" # print csv header echo "Repo,Author,Branch,Files Changed,Lines Inserted,Lines Deleted" > stats.csv function count_changes { author=$1 branch=$2 repo=$3 git checkout $branch && git pull --ff git_log_commit="git log --pretty=oneline --shortstat --since=\"$start_date\" --until=\"$end_date\" --author=\"$author\" $include $exclude $branch" echo "excuting: $git_log_commit" stats=$(eval "$git_log_commit" | grep -E 'files? changed' | awk -v author=$author '{files+=$1; inserted+=$4; deleted+=$6} END {print files, ", ", inserted, ", ", deleted}') # print csv data row echo "$repo, $author, $branch, $stats" >> ../stats.csv } for repo in "${repos[@]}"; do echo $repo pushd $repo branch_var="${repo}_branches[@]" for branch in "${!branch_var}"; do echo $branch for author in "${authors[@]}"; do count_changes "$author" "$branch" "$repo" done done popd && pwd done