win10_Git基于WSL(Linux子系统)统计代码行数命令
一、引言
找到的基于git统计代码行数的命令,一般都是基于linux系统的shell命令。在使用mac电脑或者linux系统开发时,执行这些命令比较方便。
但是还有大部分人是使用windows做开发,这时就遇到麻烦了,因为基于shell的统计命令不能在windows系统下运行。
2022年11月16日微软 Win11/10 Linux 子系统 WSL 1.0.0 正式版发布。这也为这些在windows上做研发的人们提供了执行原生linux命令提供了遍历。
以下就说下在windows系统下基于WSL使用Git命令统计工程代码行数的方法。
如何在windows系统下安装wsl请查看:windows10(19044_1706)离线安装wsl。
也可以使用一些工具统计如:cloc 工具,下载地址:
二、使用cmd、powershell执行的问题
使用powershell工程根目录下执行git命令会报如下错误
PS xxxxx > git ls-files | xargs cat | wc -l
xargs : 无法将“xargs”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 16
+ git ls-files | xargs cat | wc -l
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (xargs:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
三、在工程目录下进入wsl
3.1 首先在命令行工具下进入工程根目录,并执行以下下命令统计当前工程代码行数
PS d:\myproject> cd d:\myproject
PS d:\myproject> wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
test@DESKTOP-2VBQPJK:/mnt/d/myproject$ git ls-files | xargs cat | wc -l
16194
test@DESKTOP-2VBQPJK:/mnt/d/myproject$ exit
logout
PS d:\myproject>
命令说明:
- wsl #进入linux子系统
- git ls-files | xargs cat | wc -l #执行统计代码行数命令
- exit #退出windows子系统
四、执行代码统计
4.1 常用的两个命令
1、统计当前项目代码行数
git ls-files | xargs cat | wc -l
2、细分每个文件的代码行数,相当于把上面命令细化:
git ls-files | xargs wc -l
4.2 其它命令
1、统计某个时间段内的代码行数;
–since=统计开始时间
–until=统计结束时间
git log --since=2020-01-01 --until=2020-07-01 --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’
2、统计某个人某个时间段内的代码行数;
–author=代码提交人/用户名
–since=统计开始时间
–until=统计结束时间
git log --author=username --since=2020-01-01 --until=2020-07-01 --format=’%aN’ | sort -u | while read name; do echo -en “KaTeX parse error: Undefined control sequence: \t at position 5: name\̲t̲"; git log --au…name” --pretty=tformat: --numstat | grep “(.html|.java|.xml|.properties)$” |awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ -; done
3、统计每个用户的所有提交代码行数(包括增、删、修改等)
git log --format=’%aN’ | sort -u | while read name; do echo -en “KaTeX parse error: Undefined control sequence: \t at position 5: name\̲t̲"; git log --au…name” --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’ -; done
4、仓库提交者排名前 5(如果看全部,去掉 head 管道即可)
git log --pretty=’%aN’ | sort | uniq -c | sort -k1 -n -r | head -n 5
5、统计某个用户的所有提交代码行数
git log --author=“username” --pretty=tformat: --numstat | awk ‘{ add += $1; subs += $2; loc += $1 - $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’
6、统计代码提交的人数,也称:统计仓库提交贡献者
git log --pretty=’%aN’ | sort -u | wc -l
7、统计总提交次数
git log --oneline | wc -l
8、统计所有Java代码总行数提交修改的信息(有明细展示)
find . “(” -name “*.java” “)” -print | xargs wc -l
9、统计所有其他文件总行数提交修改的信息(有明细展示)
find . “(” -name “.m" -or -name ".mm” -or -name “.cpp" -or -name ".h” -or -name “.rss" “)” -print | xargs wc -l
可以按需要添加对应的文件后缀:
-or -name ".文件后缀”
10、统计所有文件提交记录明细
git ls-files | xargs wc -l
11、查看最近几次的提交记录
git log -p -2
-2可修改数字,查看最近几次的提交记录