如何计算远程git存储库的总行数

时间:2014-09-25 11:30:12

标签: linux git bash

我想要计入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

所有命令都失败了。

有谁知道如何计算总代码行数?

2 个答案:

答案 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 documentationshow documentation,了解命令的确切内容。

答案 1 :(得分:0)

git log --numstat --no-merges --pretty="format:" | grep -v -e '^$' | awk -F " " '{sum+=$1-$2} END {print sum}'