【www.bbyears.com--php常用代码】
在实际工作中,通过git diff来计算代码变更数量,有碰到的需求是,仅仅统计某些类型的文件(带有特殊后缀名/扩展名的文件),比如:仅仅统计当前git repo中的.java、.xml、.c、.cpp这样的文件的该变量。可以有如下两种方法实现让Git根据文件后缀名来统计,而且统计其中各个子目录中的符合条件的文件。
1. 直接使用’*.java’、’*.xml’这样即可,前提是,你的git版本比较新(如:Git >= 1.7.8 之后的版本)
git version 1.7.9.5
jay@jay-linux:~/aew-backend.git$ ls
bug config.py lib mysql README.md repo shell
jay@jay-linux:~/aew-backend.git$ git diff --shortstat e5ffef25 26c8d317 -- "*.py" "*.xml"
4 files changed, 61 insertions(+), 15 deletions(-)
2. 是用Bash 4.0 开始提供的globstar选项,通过 **/*.py 这样来匹配该目录及其所有子目录中以.py结尾的所有文件,这种方法对Git版本没有特别的要求,不管你的Git是老版本还是新版本都可以的。关于globstar,请参考前面我写过的“使用Bash中的globstart选项”一文。
git version 1.7.1
[repo@hostA aew-backend.git]$ shopt -s globstar
[repo@hostA aew-backend.git]$ git diff --shortstat e5ffef25 26c8d317 -- **/*.py **/*.xml
4 files changed, 61 insertions(+), 15 deletions(-)