提交文件给出警告:提交后挂钩失败(退出代码 255),没有输出。也没有发送电子邮件。我的钩子/提交后文件具有以下内容
#!/bin/sh
REPOS="$1"
REV="$2"
"$REPOS"/hooks/mailer.py commit "$REPOS" $REV "$REPOS"/mailer.conf
我如何手动运行该文件来解决问题?我的 mailer.py 文件也位于 hooks 文件夹下,而 mailer.conf 位于 hooks 文件夹之外。
我如何手动运行该文件来解决问题?我的 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-commit
为post-commit.temp
)。然后让用户提交他们的更改。
提交更改后,您将获得导致问题的提交的修订号。现在,您可以在手动运行提交后挂钩时使用该修订号。
如果您正在制作预提交挂钩,请允许挂钩采用事务号或修订号:
# Transaction number in pre-commit script:
REPOS="$1"
TRX="$2"
"$REPOS/hooks/myscript" -t $TRX "$REPOS"
从命令行:
cd $REPOS
hooks/myscript -r $REVISION .
这样,您可以使用已提交的修订来调试您的预提交挂钩。这比通过一遍又一遍地提交相同的更改来尝试调试要容易得多。