post-commit hook失败(退出代码255)错误

时间:2012-02-27 16:48:50

标签: svn svn-hooks

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

#!/bin/sh

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

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

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

1 个答案:

答案 0 :(得分: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

我建议您禁用后提交挂钩(在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 .

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