2013-04-16 67 views
7

我正在使用自定義構建系統來管理大量的git存儲庫,並且主要用python編寫。最簡單的方法git可以輸出「分支」和「遙控器/原點/分支」之間的提交數

如果我可以編寫一個報告所有存儲庫當前分支的命令,那麼會節省我很多時間,然後報告「分支」的頭部是否與「遠程/原始/分支」的頭部相同」。

我們已經有一個命令可以在每個git倉庫中運行一個shell命令,我正在尋找的是從git獲取一些簡單格式化信息的方法,關於分支和遠程/源/科。一些要麼是提交數量的差異,要麼是一個簡單的布爾值。

從git中獲取這些信息的方法是什麼,這將最大限度地減少我在python端執行的解析和處理的數量?

回答

1

git status顯示遠程跟蹤分支前後的提交數量。你需要先執行git fetch,否則git不知道是否有新的東西進入遠程。

1

如果branch被確保爲的origin/branch(即快速轉發)祖先,然後

git log --oneline branch..origin/branch 

應該打印在它們之間的提交,每一條線。您可以使用python或wc -l來計算行數。

不確定是否存在簡單和通用的解決方案。如果涉及孤立分支,則可能沒有共同的祖先origin/branchbranch

18

如果你有git的新版本不夠,你可以使用:

$ git rev-list --count --left-right branch...origin/branch 
2 1 

第一個數字如果提交branch數量領先的origin/branch,第二個是數量提交後面。所以這個分支有兩個不是上游的提交,還有一個不在我本地分支的提交上游。

當--count被引入時,我相信它是1.6或1.7。