2011-07-15 17 views
1

我想知道在我擁有的gitosis安裝上託管的所有存儲庫提交的總數。任何人有任何想法,我如何做到這一點?我如何計算在我的服務器上由gitosis託管的所有回購站的提交數量

+2

首先,爲什麼?其次,你有嘗試過什麼嗎? – manojlds

+0

我想獲得提交的總數以在網頁上顯示。我已經嘗試了下面列出的一個解決方案,但是,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

我認爲他正在尋找所有回購的提交總數,而不是回購數量。 – Andy

+0

被誤解。更新。 –

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 

也許可以做到整潔,但它顯示了庫隨後提交計數。

+0

不要在提交時執行grep。許多提交消息都在其中提交。也可以顯示git筆記。 – manojlds

+0

'git log'需要像'--pretty = oneline'這樣的參數來幫助解決這個問題。 –

+0

好想法。不知道那個'漂亮= oneline'。我知道有這樣的事情,但找不到它。謝謝,已經更新了答案。 –

2

有一定的方法來計算像提交的數目:

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

您可以使用每個回購

git rev-list --all | 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相同的結果。

相關問題