2013-11-04 130 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编写)让他生成每小时的统计信息。