在命令行中使用 git ,您可以在输入提交的日志消息之前看到预提交挂钩的结果。如果你的预提交钩子使提交失败,你就会被警告并且不会写任何东西。
但是使用 magit ,系统会要求您输入日志注释,然后然后评估您的钩子,如果它失败您将看不到原因< / em>的。你刚才读到:
git exited abnormally with code 1.
我理解这是正常的,因为当你完成编辑magit运行git命令的日志消息时。
那么,在你要求日志之前,你如何制作评估你的钩子? 你如何让magit显示钩子的结果?
一个相关的问题是,你如何为你提供参数预先提交钩子,以便只为存储文件运行它,而不是存储库中的所有文件?
我使用预提交挂钩主要是为了检查我是否没有忘记调试内容,比如剩下的'ipdb'和一些个人痕迹。
谢谢!
答案 0 :(得分:2)
在magit调用git失败后,你应该能够通过$
为了评估预提交钩子,magit中现在没有任何内容。
您可以尝试在magit-log-edit-mode-hook
中添加一些内容:
(add-hook 'magit-log-edit-mode-hook
'(lambda ()
(shell-command "shell command to run git's hook")))
当然,这里缺少shell命令......
对于预先提交中的相关问题,您需要使用git来了解将要提交的文件。像
这样的东西git diff --name-only --cached
答案 1 :(得分:2)
我在打开日志消息缓冲区之前编写了运行钩子的代码:
https://github.com/vanicat/magit/commit/87ec17c46b156c8508a47aa6c9ba982ef8a61b4c
你可以测试它,它错过了忽略钩子的可能性,并且现在不会运行其他钩子而不是预先提交。