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

标签 git githooks

试图找出 Git 提交后 Hook 中的提交花费了多长时间。

我有一个提交后的 git 钩子(Hook),可以通过 API 提交有关提交的信息。我想做的是弄清楚在提交上花费了多长时间。大致。

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

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

那么,在 git post-commit Hook 中,我如何获得已更改文件的列表?

最佳答案

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

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

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

关于git - 在 git post-commit Hook 中,如何获取已更改文件的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4205589/

相关文章:

git - 如何与原GitHub项目同步fork?

git log --numstat 有奇怪的数据

git - Makefile中子模块的自动初始化和更新

git - 从 git 更新后 Hook 调用 'git pull'

node.js - 当本地没有可用的 Node.js 时,将 Husky 与 Docker 结合使用

git - 完全陷入 git - "git push"不工作, "git pull"不修复

用于在分支更改时更新 Git 子模块的 Git Hook

git - 如何使用 Git 进行预 checkout

git - 如何捕获 git 提交消息并运行操作

git - 解决冲突后如何根据 "theirs"版本对文件进行 git-diff