【发布时间】:2018-07-28 21:45:25
【问题描述】:
使用 strace 我注意到 git-revert 只调用了两个钩子:
- 准备提交消息
- 提交后
但是 git-commit 调用这四个:
- 预提交
- 准备提交消息
- 提交消息
- 提交后
既然 git-revert 产生一个提交,为什么它不调用相同的 作为 git-commit 的钩子?
我在 Git 邮件列表上问过这个问题,但没有得到回应。所以我在这里问。
当我实现一个钩子来检测时,我最终研究了这个 并拒绝恢复合并提交的提交,因为它们是 troublesome.
我尝试将它实现为一个 commit-msg 钩子来搜索字符串 提交消息中的“这将恢复提交 SHA-1”。但是 git-revert 不调用 commit-msg 钩子。
所以,现在我将我的检查实现为预接收挂钩。但我发现 将所有预接收检查也作为 pre-commit 或 commit-msg 钩子,以便我可以检测到问题 提交时间而不是仅在推送时间。
【问题讨论】:
-
需要明确的是,revert commit 没有触发客户端钩子或服务器端钩子的问题?我认为你可以创建一个服务器端钩子,它可以检测到这样的提交,然后阻止它。但是对一个好问题 +1。
-
问题是命令 git-revert 没有调用命令 git-commit 调用的所有客户端钩子
标签: git