所以在过去的几周里,我决定在 git 提交中记下我的计费时间。这让客户可以看到他们花了多少钱,但也意味着我不必在周末补齐。这对我们俩都有好处。
我在提交结束时留下了一些编码信息。这是一个示例:
Flushed out the flux capacitor, drank some BRAWNDO.
T=0.3
这意味着我花了大约 20 分钟做某事。1 是一个小时。
所以我的项目中到处都是这些东西。现在的问题是,我如何从特定日期中挑选出这些,并将它们加起来以便我可以向客户收费?
我应该补充一点,这些不是单用户项目。有些是协作的,其他开发人员可能希望跟随我的领导并以这种方式处理他们的账单。我只需要过滤我的提交。
我们可以根据谁(
--author
: 可以是姓名或电子邮件)和何时(--since
: 采用奇怪数量的格式和模糊字符串)来限制 git 输出的日志。然后我们只需要找到以 开头的行,
T=
在所有数字之间添加加号并将它们输入命令行计算器bc
。或者用一个
awk
:呃,只有 30.5 小时?!感觉像60。
--grep '^T='
在具有数百万次提交的更大项目中,将 a 添加到git log
命令中可能是明智的。这将在外部grep
条件数据之前在内部进行快速过滤。开始使用这个后出现了问题。我需要重置时钟。我已经经历了几次脚本迭代(很多聪明的管道),但是由于
git rebase
和其他树混乱操作,按日期对提交进行排序的最佳方法,因此它们只显示一次是手动执行。因此,我提出了我认为我写过的最丑陋的功能脚本。
这会解析每个提交并输出每个计费块(在
T=RESET
令牌之间)。好多了。它慢得多。总有一天我会用 Python 重写它似乎是不可避免的,但我现在必须做有偿工作 :)