Svn 提交后挂钩失败(退出代码255)错误

Svn 提交后挂钩失败(退出代码255)错误,svn,svn-hooks,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文件夹之外 如何手动运行该文件来解决问题

提交文件会发出警告:提交后挂钩失败(退出代码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文件夹之外

如何手动运行该文件来解决问题?我的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复制到另一个文件中,并对其进行处理。添加一些print语句,在调试器中运行它,等等。例如,您可能希望在准备调试特定的发送机制之前,不要将程序的实际邮件部分真正发送给开发人员。开发人员不喜欢他们的邮箱被一堆提交后钩子测试轰炸

$ 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
)。然后让用户提交他们的更改

提交更改后,您就有了导致问题的提交版本号。现在,您可以在手动运行post-commit钩子时使用该修订号


有益的暗示 如果要创建预提交挂钩,请允许挂钩获取事务号或修订号:

# Transaction number in pre-commit script:

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

"$REPOS/hooks/myscript" -t $TRX "$REPOS"
从命令行:

 cd $REPOS
 hooks/myscript -r $REVISION .

这样,您就可以用已经提交的修订调试预提交钩子。这比反复提交相同的更改来调试要容易得多。

谢谢David,我会尝试一下。给文件mailer.py的正确权限应该是什么?它当前是-rw-rw-r-x1用户grp-mailer。py@user1076881有趣的问题。执行服务器进程的用户(可能还有文件所有者)必须具有执行权限。假设与文件所有者相同,则应为-rwx??????。其余的其实并不重要。它可以是-rwxr-xr-x(0755)或-rwxr--r--(744)甚至-rwx--(700)。关键是所有者应该能够执行该文件。Do
chown 755 mailer.py
。还要确保该文件由负责repo的用户所有,并且是执行svn服务器进程的同一用户。