【问题标题】:post-commit hook failed (exit code 255) error提交后挂钩失败(退出代码 255)错误
【发布时间】:2012-02-27 16:48:49
【问题描述】:

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

【问题讨论】:

    标签: svn svn-hooks


    【解决方案1】:

    如何手动运行该文件来解决问题?我的 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)。然后让用户提交他们的更改。

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


    有用的提示

    如果您正在制作 pre-commit 钩子,请允许该钩子采用事务号或修订号:

    # Transaction number in pre-commit script:
    
    REPOS="$1"
    TRX="$2"
    
    "$REPOS/hooks/myscript" -t $TRX "$REPOS"
    

    从命令行:

     cd $REPOS
     hooks/myscript -r $REVISION .
    

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

    【讨论】:

    • 谢谢大卫,我会试试的。文件 mailer.py 的正确权限应该是什么?
    • 目前是-rw-rw-r-x 1 user grp mailer.py
    • @user1076881 有趣的问题。执行服务器进程的用户(可能还有文件所有者)必须具有执行权限。假设和文件所有者一样,应该是-rwx??????。其余的其实无所谓。它可以是 -rwxr-xr-x (0755) 或 -rwxr--r-- (744) 甚至 -rwx------ (700)。关键是所有者应该能够执行该文件。做chown 755 mailer.py。还要确保该文件归拥有 repo 的用户所有,并且是执行 svn 服务器进程的同一用户。
    猜你喜欢
    • 2014-09-07
    • 2015-07-25
    • 2012-07-15
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多