3

提交文件给出警告:提交后挂钩失败(退出代码 255),没有输出。也没有发送电子邮件。我的钩子/提交后文件具有以下内容

#!/bin/sh

REPOS="$1"
REV="$2"

"$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf

我如何手动运行该文件来解决问题?我的 mailer.py 文件也位于 hooks 文件夹下,而 mailer.conf 位于 hooks 文件夹之外。

4

1 回答 1

3

我如何手动运行该文件来解决问题?我的 mailer.py 文件也位于 hooks 文件夹下,而 mailer.conf 位于 hooks 文件夹之外。

这很简单:只需手动运行命令。

$ cd $REPOS   #Where ever that is...
$ REV=230     #Whatever the revision number is

$ hooks/mailer.py commit . $REV mailer.conf

您可以将 mailer.py 复制到另一个文件中,然后使用它。添加一些打印语句,在调试器中运行,等等。例如,您可能希望在您准备好调试特定的发送机制之前,将程序的实际邮件部分真正邮寄给开发人员。开发人员不喜欢他们的邮箱被一堆提交后的钩子测试轰炸。

$ cp hooks/mailer.py hooks/mailer2.py
$ cp mailer.conf mailer2.conf
$ hooks/mailer2.py commit . $REV mailer.conf

我建议你禁用你的 post-commit 钩子(在 Unix/Linux 中,去掉可执行位就足够了,或者只是重命名post-commitpost-commit.temp)。然后让用户提交他们的更改。

提交更改后,您将获得导致问题的提交的修订号。现在,您可以在手动运行提交后挂钩时使用该修订号。


有用的提示

如果您正在制作预提交挂钩,请允许挂钩采用事务号或修订号:

# Transaction number in pre-commit script:

REPOS="$1"
TRX="$2"

"$REPOS/hooks/myscript" -t $TRX "$REPOS"

从命令行:

 cd $REPOS
 hooks/myscript -r $REVISION .

这样,您可以使用已提交的修订来调试您的预提交挂钩。这比通过一遍又一遍地提交相同的更改来尝试调试要容易得多。

于 2012-02-27T21:47:37.827 回答