11

试图弄清楚 Git 提交后挂钩中的提交花费了多长时间。

我有一个提交后的 git 钩子,它通过 API 提交有关提交的信息。我想做的是弄清楚提交花了多长时间。大致。

我的假设是,可以通过找到所涉及文件的所有创建时间和修改时间的最小值并与最大创建和修改时间进行比较来计算出一个粗略的值。

我可以在 Python 脚本中轻松地做到这一点。如果有人告诉我这是文件“foo.txt”、“bar.txt”和“path/bla.txt”,我可以根据这些文件在脚本中快速进行一些算术运算。

那么,在 git post-commit 钩子中,如何获取已更改文件的列表?

4

2 回答 2

12

在围绕 git 编写脚本时,您应该尝试坚持使用管道命令——它们的格式不太可能改变并且更容易解析。这是一个输出提交中更改的路径名称的命令:

git diff-tree -r --name-only --no-commit-id <tree-ish>

除此之外,您可能希望检查索引,因为它包含有关文件何时暂存的时间戳,这可能会给您带来额外的优势;但是,我不相信有办法访问这些信息。

于 2010-11-17T15:49:49.070 回答
0

做了一些研究,发现这git log --name-only -n1是最好的方法。获得最小值并不难。和最大。通过进行一些字符串匹配和使用 Pythonos.stat模块,从文件中提取时间戳。

作为一个通用的解决方案,它仍然不是很好,因为文件的修改时间并不能真正反映实际花费的时间。

于 2010-11-17T15:10:39.620 回答