2011-07-15 7 views
1

私が持っているgitosisのインストールでホストされているすべてのリポジトリで行われたコミットの総数を調べようとしています。どのように私はこれを行うことができます誰もが何か考えがありますか?私のサーバー上でgitosisによってホストされているすべてのreposにコミットされたコミット数をカウントするには

+2

まず、なぜですか?次に、何か試しましたか? – manojlds

+0

Webページに表示するコミットの総数を取得します。私は以下の1つのソリューションを試しましたが、gitユーザーは実際にはsshアクセスを持っていません。 – user847083

答えて

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を使用しています。

+0

ありがとう!これはまさに私が探していたものです! – user847083

+0

@manojldsが指摘しているように、 'rev-list --all'は実際より良いでしょう。 –

-1

"検査用リポジトリ"の作成をおすすめします。私はgitolite使用しますが、プロセスは同じのようになります。今

git init --bare all && cd all 
ssh [email protected] | grep @W | xargs -i{} git remote add {} [email protected]:{}.git 
git fetch --all 

あなたが行数を実行して、カウントを得ることができる必要があります:

最初にすべてのリポジトリからのコミットを収集レポを作成

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

これが役に立ちます。

+1

私は彼がreposの数ではなく、すべてのreposにわたってコミットの総数を探していると思います。 – Andy

+0

誤解されています。更新中。 –

0

私はgitosisの機能を認識していませんが、gitosisはすべてのリポジトリを1つのディレクトリに保存するので非常に簡単です。

たとえば、デフォルトのgitosisインストール(well、または少なくともmine :)は、リポジトリを〜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 

はおそらくすっきりそれを行うことができますが、それは、コミット回数に続くリポジトリを示しています。

+0

コミット時にgrepを実行しないでください。多くのコミットメッセージには 'commit'があります。 gitノートも表示されます。 – manojlds

+0

'git log'はこのようなことを助けるために' --pretty = oneline'のようなparamsをとります。 –

+0

良い考え。それについて知らなかった - かなり= onelineです。私はそれに似たものがあることを知っていましたが、それを見つけることができませんでした。ありがとう、答えを更新しました。 –

2

のようなコミットの数をカウントする特定の方法があります。

git rev-list --all | wc -l 

またはブランチ

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

あなたは、各レポにそれを使うか、のそれぞれに行くのスクリプトを書くことができるためにはレポは、上記のいずれかを実行し、カウントを得る?

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 

これは、すべてのプロジェクトのコミットを表示します、あなたは

0
自分で追加する必要があります

新しいバージョンのgit(2.14.1でテスト済み)では、コマンドgit rev-list --count HEADが動作し、git rev-list --all | wc -lと同じ結果が得られます。

関連する問題