我试图找出在我所拥有的gitosis安装上托管的所有存储库中提交的总数。任何人对我如何做到这一点都有任何想法?
答案 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
希望这有帮助。