我想要计入git存储库中的总代码行数。 我在谷歌找到了答案。
git ls-files -z | xargs -0 cat | wc -l
它在本地存储库中运行良好。
但是。 我想要计入远程存储库。
所以,我试过了。
git ls-files -z /home/bjyoo/repositories/root/localfiletest.git | xargs -0 cat | wc -l
,
git ls-files -z --git-dir=/home/bjyoo/repositories/root/localfiletest.git | xargs -0 cat | wc -l
和
git --git-dir=/home/bjyoo/repositories/root/localfiletest.git --ls-files | xargs -0 cat | wc -l
所有命令都失败了。
有谁知道如何计算总代码行数?
答案 0 :(得分:4)
虽然VonC对于命令失败的原因是正确的,但仍然有一种方法可以计算存储库中的行,即使此存储库是裸的。
要使其正常工作,您必须使用git show
git打印特定修订版本中文件的内容。
假设您当前在存储库中,这样的命令可能如下所示。
for file in $(git ls-tree --name-only -r HEAD); do
git show HEAD:"$file"
done | wc -l
如果您想从其他文件夹执行命令,可以在--git-dir
关键字后使用git
。
for file in $(git --git-dir=<path-to-repo> ls-tree --name-only -r HEAD); do
git --git-dir=<path-to-repo> show HEAD:"$file"
done | wc -l
我们正在使用git ls-tree
列出存储库中的所有文件,原因是ls-files
无法在裸存储库中工作。然后,我们使用git show
结合特定版本打印文件的内容。
您可以查看ls-tree documentation和show documentation,了解命令的确切内容。
答案 1 :(得分:0)
git log --numstat --no-merges --pretty="format:" | grep -v -e '^$' | awk -F " " '{sum+=$1-$2} END {print sum}'