2013-11-04 129 views
16

寫的代碼確定#線我想繪製的書面每小時超過一天的過程中新的代碼行#。GIT - 每小時(提交和未提交)

我知道git的差異,git的日誌,他們是決定致力於支線的總#非常強大。 --since =「7am」選項也非常棒。

一些我利用git的命令是:相比於掌握

共線#

git log --numstat --pretty="%H" master | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}' 

#線devel的分支附加

git log --numstat --pretty="%H" master..devel | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}' 

#自從時間以來的#行

git log --since="7am" --format=format: --numstat | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("%d, -%d\n", plus, minus)}' 

#線目前未提交

git diff --stat | tail -1 | awk '{print $4}' 

我一直在想出一個辦法掙扎,雖然跟蹤寫在過去一小時的新線,包括未提交變更#,在所有在當前回購分行。

這可能更多的是數學題。

問題:

  • 我怎麼能確定所有分支,包括未提交的更改寫在過去一小時線的確切數額。

陷阱/場景:

  • 200未提交晚上7點是200個寫入新行。晚上8點未提交+250,過去一小時內只有50條新線。
  • +200提交的晚上7點是寫200條新線。晚上8點,我們提交100行,然後再寫50條新行。現在,+150顯示爲未提交,但是我們需要確定在過去一小時內只寫了50行新行。協調已提交和未提交的統計信息。
  • +200晚上7時未提交。晚上7點30分,我們再寫500條新的線路並提交。晚上8點,我們再寫100多條新線,因此顯示+300未提交。我們最終應該在最後一小時寫出600條新線。
+1

因爲你提到的陷阱,你很可能將不得不去與存儲上次運行的結果的解決方案(在一個文件中,DB,與'git的config'等資料庫),然後比較這次對他們的結果。保存最後一個值的最簡單的存儲選項可能是'git config',但由於您希望將歷史數據保存爲圖形,您可能需要一個簡單的數據庫。如果你已經有一個正在運行的數據庫服務器,你可以使用它,或者你可以使用像SQLite這樣的基於文件的數據庫。 –

+0

是的,得到了​​一個MySQL數據庫來存儲所添加的代碼總數,以及過去一小時COMMITTED的行數。我仍然有點不確定如何評估未提交的代碼行,而不重複計算。 –

+1

將來自此運行的未提交的線路與從上次運行未提交併從此運行提交的總線進行比較。差異將是新行的數量。對於你的第一個例子:250 + 0 - 200 = 50.對於你的第二個例子:150 + 100 - 200 = 50.對於你的第三個,300 + 500 - 200 = 600. –

回答

2

有一個工具gitstats,可以按日期給你Lines of Code。 也許你可以稍微調整一下代碼(用python編寫)讓他生成每小時的統計信息。