统计git存储库中的行数
我如何计算git存储库中所有文件中的总行数?
git ls-files
给了我一个由git跟踪的文件列表。
我正在寻找一个命令来cat
所有这些文件。 就像是
git ls-files | [cat all these files] | wc -l
xargs
会做你想做的事情:
git ls-files | xargs cat | wc -l
但有了更多的信息,可能更好,你可以这样做:
git ls-files | xargs wc -l
git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904
这显示了从空树到当前工作树的差异。 当前工作树中的所有行都会被计数。
如果你想知道这个计数是因为你想知道项目的范围,那么你可能更喜欢CLOC的输出(“Count Lines of Code”),这可以让你按语言细分出重要且不重要的代码行。
cloc $(git ls-files)
(这一行相当于git ls-files | xargs cloc
,它使用sh
的$()
命令替换功能。)
示例输出:
20 text files.
20 unique files.
6 files ignored.
http://cloc.sourceforge.net v 1.62 T=0.22 s (62.5 files/s, 2771.2 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Javascript 2 13 111 309
JSON 3 0 0 58
HTML 2 7 12 50
Handlebars 2 0 0 37
CoffeeScript 4 1 4 12
SASS 1 1 1 5
-------------------------------------------------------------------------------
SUM: 14 22 128 471
-------------------------------------------------------------------------------
你将不得不首先安装CLOC。 你或许可以安装cloc
与包管理器-例如, brew install cloc
与自制。
cloc $(git ls-files)
通常是对cloc .
的改进cloc .
。 例如,上面的带有git ls-files
示例输出报告了471行代码。 对于同一个项目, cloc .
报告高达456,279行(需要6分钟运行),因为它在Git忽略的node_modules
文件夹中搜索依赖关系。