16

我想绘制一天中每小时编写的新代码行数。

我知道 git diff、git log 并且它们对于确定提交给分支的总行数非常强大。--since="7am" 选项也非常棒。

我正在使用的一些 git 命令是:

总行数

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

# 与 master 相比,在 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}'

尽管我一直在努力想出一种方法来跟踪过去一小时内编写的新行数,包括当前仓库中所有分支的未提交更改。

这可能更像是一个数学问题。

问题:

  • 如何确定过去一小时跨所有分支写入的确切行数,包括未提交的更改。

陷阱/场景:

  • 晚上 7 点 +200 未提交是写了 200 行新行。+250 uncommitted at 8pm 只是过去一小时写的 50 行新行。
  • 晚上 7 点 +200 未提交是写了 200 行新行。晚上 8 点,我们提交 100 行,然后再写 50 行。现在 +150 显示为未提交,但我们需要确定过去一小时内只写入了 50 行新行。协调已提交和未提交的统计数据。
  • +200 晚上 7 点未提交。在晚上 7:30,我们编写了 500 条额外的新行并提交它们。晚上 8 点,我们又写了 100 行新行,因此将 +300 显示为未提交。我们应该在最后一个小时内写出 600 行新行。
4

1 回答 1

2

有一个工具gitstats可以Lines of Code按日期为您提供。也许您可以稍微调整一下代码(用 python 编写),让他生成每小时的统计数据。

于 2013-12-18T12:06:20.823 回答