我需要从git项目中提取一些数据,为此,我正在开发一个脚本,以所需的格式输出结果。
我要看的一件事是有多少次提交已更新特定扩展名的文件。例如,我要计算项目中已更新.tex
个文件的所有提交(我也不在乎是否也更改了其他文件)。
我从脚本中得到的东西似乎是有道理的,但是我想知道git中是否有内置的,类似的功能,或者是否有一种快速的变通办法来收集此数据以进行验证我的输出。
答案 0 :(得分:3)
您可以列出影响任何与扩展名匹配的文件的提交
git log :/*.txt :/**/*.txt
(请注意,第一个模式表示查找工作树根目录,第二个模式表示查找根目录下的任何目录。在我的测试中,仅使用:/*.txt
工作,但基于文档,我看不到原因。如果有人可以填写该空白,请执行...)
您可以简化输出,然后将其输入到wc
git log --format=%H :/*.txt :/**/*.txt |wc -l
您可能需要扩大搜索范围,因为以上内容仅显示了HEAD
可以访问的内容。
git log --all --format=%H :/*.txt :/**/*.txt |wc -l
您还可能需要避免简化历史记录。
git log --all --full-history --format=%H :/*.txt :/**/*.txt |wc -l
您可以使用许多其他选项来精确控制输出中包含的内容(例如,--diff-filter
如果您只对某些类型的文件修改感兴趣,等等)