我如何计算在我的服务器上由gitosis托管的所有repos中提交的提交数

时间:2011-07-15 19:52:02

标签: git gitosis

我试图找出在我所拥有的gitosis安装上托管的所有存储库中提交的总数。任何人对我如何做到这一点都有任何想法?

6 个答案:

答案 0 :(得分:2)

有一些方法可以计算提交次数,例如:

git rev-list --all | wc -l

或分支

git log branch --pretty=oneline | wc -l

你可以在每个仓库上使用它,或者写一个到每个仓库的脚本,运行上面的任何一个并获得计数吗?

答案 1 :(得分:1)

ls /path/to/repos/ | xargs -I % git --git-dir=/path/to/repos/%/.git rev-list --all 2>/dev/null | wc -l

这对我来说效果很好。您可以grep -v zip或使用更具体的find查询来查找特定目录。

更新:使用rev-list --all代替log --pretty=oneline

答案 2 :(得分:1)

对于较新版本的git(在2.14.1上测试),命令git rev-list --count HEAD将起作用,并提供与git rev-list --all | wc -l相同的结果。

答案 3 :(得分:0)

我不知道gitosis有这样做的功能,但由于gitosis将所有存储库保存在一个目录中,因此非常简单。

例如,默认的gitosis安装(好吧,或至少我的:))将存储库存储在~git / repositories中。

转到该目录并执行与此类似的操作:

for rep in `find . -maxdepth 1 -mindepth 1 -type d -print`; do 
    echo $rep; 
    (cd $rep && git log -pretty=oneline | wc -l); 
done

可以做得更整洁,但它会显示存储库,然后是提交计数。

答案 4 :(得分:0)

在我的gitosis服务器上,我使用此命令

cd /path/to/repos/
ls | xargs -I % git --git-dir=% rev-list --all 2>/dev/null | wc -l

在使用

的gitorious服务器中
array=($(ls /path/to/repos/))
for i in ${array[@]}; do cd /path/to/repos/$i; ls | xargs -I % git --git-dir=% rev-list --all 2>/dev/null | wc -l; done

这将显示所有项目的提交,您应该自行添加

答案 5 :(得分:-1)

我建议制作一个“检验库”。我使用的是gitolite,但过程是一样的:

首先创建一个从所有存储库收集提交的repo:

git init --bare all && cd all
ssh gitolite@gitserver | grep @W | xargs -i{} git remote add {} gitolite@gitserver:{}.git
git fetch --all

现在你应该可以通过计算行数来计算:

git log --all --format=%h | wc -l

希望这有帮助。