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

Pet*_*son 8 git githooks

试图弄清楚在Git post-commit钩子中提交花了多长时间.

我有一个post-commit git hook,它通过API提交有关提交的信息.我想要做的是弄清楚在提交上花了多长时间.大致.

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

我可以在Python脚本中轻松完成此操作.如果有人告诉我这是文件"foo.txt","bar.txt"和"path/bla.txt",我可以在基于这些文件的脚本中快速做一些算法.

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

Jos*_*Lee 10

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

git diff-tree -r --name-only --no-commit-id <tree-ish>
Run Code Online (Sandbox Code Playgroud)

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