到目前为止,我得到了这个非常有用的命令,它可以帮助我确定,当我处理一个项目时:
git log --author="MyUsername" --pretty=format:"%cd; %h; %s" > time.csv
但是我很感兴趣,如果有办法找出我在提交上工作了多长时间。 从理论上讲,执行此操作的方法是获取此提交中具有最早更改日期的已提交文件,并计算此提交与提交之间的时间跨度。
这甚至可能/准确吗?实现此目的的代码是什么?
不,这是不可能的,提交是 git 中跟踪内容的原子单元——git 是面向内容的,并且有自己的简单树/blob 文件系统,它在操作系统的文件系统之上使用,所以你不能用 git 检查"(a) 提交中的最早更改日期"。您唯一可以检查的是提交时间戳和提交之间的时间间隔,就像您已经做的那样。
我唯一能建议的就是一个预提交钩子。当 git 执行你的自定义预提交钩子时,你可以查看你将要提交的所有文件,找到文件系统上最早的时间戳,正如你所建议的那样,并将这个元数据写在某个地方。甚至可以将其包含在提交中。那将是多么可靠...好吧,正如评论中提到的,这将取决于您无关的身体活动的会计:/也许你可以让预提交钩子弹出一个编辑器或一个消息框,您可以在其中输入处理提交本身所花费的小时数。