首页 > 系统相关 >win10_Git基于WSL(Linux子系统)统计代码行数命令

win10_Git基于WSL(Linux子系统)统计代码行数命令

时间:2023-10-25 11:06:05浏览次数:45  
标签:xargs git name -- lines WSL Git Linux 统计


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可修改数字,查看最近几次的提交记录


标签:xargs,git,name,--,lines,WSL,Git,Linux,统计
From: https://blog.51cto.com/xxjjing/8015485

相关文章

  • 用git stash暂存修改
    gitstash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后,可以再回到之前的状态,继续之前的开发。使用场景切换分支:当你正在开发一个功......
  • 后浪搞的在线版 Windows 12「GitHub 热点速览」
    本周比较火的莫过于3位初中生开源的Windows12网页版,虽然项目完成度不如在线版的Windows11,但是不妨一看。除了后生可畏的win12之外,开源不到一周的open-interpreter表现也很抢眼,一个在终端就能使唤的AI助手获得了15k+star。还有深度开源的deepin-unioncodeIDE表现......
  • Harbor系统文章01---Linux安装Harbor
    1、切换到指定目录下载harbor安装包wgethttps://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz 2、解压文件:tar-zxvfharbor-offline-installer-v2.5.3.tgz 3、注释https配置,测试环境用http。把harbor.yml.tm......
  • 关于LINUX ARM开发环境软硬件选取
      之前搭建LINUXARM开发环境,找了好几个ARM硬件平台,包括:1.树莓派2.USBWIFI高通4103.NasBoardRK3568  主要系统使用的是ubuntu、debian或armbian(debian系),没有选择一些正规的开发板主要是因为一个太贵,新的树莓派4也不建议,太贵了(手上的树莓派是15年入的一个老树莓派......
  • 国内访问Github的方法
    简要修改hosts文件,达到绕过国内DNS解析的目的,提升Github访问速度。查询IP通过以下网站https://www.ipaddress.com/http://ping.chinaz.com/直接查询如下网站的IP地址github.comassets-cdn.github.comgithub.global.ssl.fastly.net修改hosts文件hosts文件的位置在(wind......
  • Git 克隆错误 error: RPC failed; curl 28 Recv failure: Connection was reset
    在网络情况不稳定下克隆项目时,可能会出现下图中的错误。问题原因:http缓存不够或者网络不稳定等。我也是找了好多博客资料,终于解决了解决方法打开cmd,修改git配置(加大httpBuffer)即可。gitconfig--globalhttp.postBuffer524288000  我在解决这个问题之前clone一......
  • Slax Linux 获得增强的会话管理和启动参数选项
    Slax Linux 的创建者和维护者托马斯-马特吉切克(TomasMatejicek)在自己生日这天(生日快乐!)发布了其小巧便携的GNU/Linux发行版的新版本,带来了各种增强功能和错误修复。新发布的SlaxLinux版本(Debian基本版本为12.1,Slackware基本版本为15.0.2)在从可写设备运行发行版......
  • 白嫖在线云服务器,免费在 linux 服务器使用 docker 。 附视频+附文档
    白嫖在线云服务器,免费在linux服务器使用docker。附视频+附文档@目录前言启动Nginx案例最后视频:https://www.bilibili.com/video/BV1WN411W79V/国内互联网经过多年发展,单体应用已经无法支持我们的互联网业务,分布式、微服务架构已经是大势所趋。就算是一些小公司,也已......
  • linux内核通信
    符号导出EXPORT_SYMBOL()EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。2.使用方法加入B中调用A中导出函数[1]在模块A中c文件或者头文件中使用EXPORT_SYMBOL(xxxx)导出函数.有些需要添加编译选项-DEXPORT_SYMTAB.[......
  • 白嫖在线云服务器,免费在 linux 服务器使用 docker 。 附视频+附文档
    <!--@Author:JavaPub@Date:2023-10-2419:34:55@LastEditors:yourname@LastEditTime:2023-10-2423:00:26@Description:HereistheJavaPubcodebase.SearchJavaPubonthewholeweb.@FilePath:\JavaPub-Blog\docs\posts\docker\免费使用云服务器部署docker.......