我正在用bash编写一个post-commit脚本,我想将消息传递给正在提交的客户端。然而
echo my message >&2
不会将其恢复到客户端。甚至可以使用post-commit钩子发回消息吗?
答案 0 :(得分:13)
只有当它失败时,Hook才会显示STDERR(现在,钩子不会显示STDOUT)。 因此,您必须从脚本返回非零代码以将“我的消息”传递给用户(只需在回显后添加退出1 )。
看看here:
如果提交后挂钩返回非零退出状态,则提交将 因为它已经完成所以不会中止。但是,任何事情 打印到stderr的钩子将被编组回客户端, 使诊断钩子故障更容易。
答案 1 :(得分:6)
钩子打印到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。事实证明,当编组的文本包含&
,<
或>
个字符时,编组失败。用&
,<
和>
代替后,文字就通过了。