2

使用命令行上的git,您可以在输入提交的日志消息之前看到预提交挂钩的结果。如果你的 pre-commit 钩子导致提交失败,你会收到警告并且不要写任何东西。

但是使用magit,您会被要求输入您的日志评论,然后它会评估您的钩子,如果它失败了,您将不明白为什么。你刚刚读到:

git exited abnormally with code 1. 我知道这是正常的,因为当您完成编辑日志消息时,magit 会运行 git 命令。

那么,在询问日志之前,您将如何让 magit评估您的钩子?如何让 magit 显示钩子的结果?

一个相关的问题是,你如何为你的 pre-commit 钩子提供参数,以便只为隐藏的文件而不是存储库中的所有文件运行它?

我主要使用预提交挂钩来检查我是否没有忘记调试内容,例如剩余的“ipdb”和一些个人痕迹。

谢谢 !

4

2 回答 2

2

在打开日志消息缓冲区之前,我已经编写了运行钩子的代码:

https://github.com/vanicat/magit/commit/87ec17c46b156c8508a47aa6c9ba982ef8a61b4c

您可以对其进行测试,它错过了忽略钩子的可能性,并且暂时不要运行其他钩子而不是预先提交。

于 2012-07-24T10:32:08.017 回答
2

在 git 被 magit 调用失败后,你应该可以通过使用来了解原因$

对于评估预提交钩子,现在 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
于 2012-07-19T13:55:56.480 回答