SVN post-commit hook将消息发送回客户端

时间:2011-12-08 00:32:21

标签: svn bash stderr post-commit-hook

我正在用bash编写一个post-commit脚本,我想将消息传递给正在提交的客户端。然而

echo my message >&2

不会将其恢复到客户端。甚至可以使用post-commit钩子发回消息吗?

3 个答案:

答案 0 :(得分:13)

只有当它失败时,Hook才会显示STDERR(现在,钩子不会显示STDOUT)。 因此,您必须从脚本返回非零代码以将“我的消息”传递给用户(只需在回显后添加退出1 )。

看看here

  

如果提交后挂钩返回非零退出状态,则提交将   因为它已经完成所以不会中止。但是,任何事情   打印到stderr的钩子将被编组回客户端,   使诊断钩子故障更容易。

答案 1 :(得分:6)

征服post-commit hook

  

钩子打印到stderr的任何内容都将被编组回客户端,从而更容易诊断钩子故障。

您可以检查这不是一个简单的报价问题:

echo "my message" >&2

您可以在那些hook examples中看到任何echo>&2都包含引号。

bash chapter on redirection还包含带引号的示例。

但是,作为pmod中的his answer详细信息,除非脚本的退出状态与0不同,否则该stderr消息将不可见,如“subversion post-commit hook: print an error message that the user can see?”所示

#!/bin/bash
echo "test" >&2
exit 1

答案 2 :(得分:4)

我遇到了同样的问题,Apache和mod_svn。事实证明,当编组的文本包含&<>个字符时,编组失败。用&amp;&lt;&gt;代替后,文字就通过了。