我想绘制一天中每小时编写的新代码行数。
我知道 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 行新行。