GIT - 每小时编写的代码行数(已提交和未提交)的确定

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)}'

与主分支相比,开发分支增加了#行

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行。在晚上8点,+250未提交意味着只有过去一小时新写入50行。
  • 在晚上7点时,+200未提交意味着新写入了200行。在8点我们提交了100行,然后又写入了50行新代码。现在+150显示为未提交,但我们需要确定过去一小时只写入了50行新代码。调和已提交和未提交的统计数据。
  • 在晚上7点时,+200未提交。在7:30pm我们又写入了500条新的代码并提交。8点时,我们又写入了100条新的代码,因此显示为+300未提交。我们应该得出过去一小时写入了600行新代码的结论。

1
由于您提到的“陷阱”,您可能需要选择一种解决方案,该方案将存储上次运行的结果(在文件、数据库、使用git config存储库等中),然后将此次结果与它们进行比较。保留最后一个值的最简单的存储选项可能是git config,但是由于您想要保留历史数据以进行图形化处理,因此您可能需要一个简单的数据库。如果您已经有一个正在运行的数据库服务器,可以使用它,或者您可以使用基于文件的SQLite数据库。 - Moshe Katz
1
将此次运行的未提交代码行数与上一次未提交和本次已提交的总和进行比较。差值即为新增代码行数。例如:第一个示例为 250 + 0 - 200 = 50。第二个示例为 150 + 100 - 200 = 50。第三个示例为 300 + 500 - 200 = 600。 - Moshe Katz
1
谁能保证一次提交中的代码行数代表了它们实际编写时的时间?如果我把修改藏起来并保存了很久,那该怎么办呢? - RyPeck
21
希望一些可怜的人不要根据这个指标来评判他们的生产力 - 这可能会导致代码质量的严重恶化! :) - James World
6
你应该追踪被删除的行数。 - SamB
显示剩余7条评论
1个回答

2

有一个工具gitstats可以按日期给出代码行数。也许你可以微调一下这个用Python编写的代码,让它生成每小时的统计数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接