我正在使用bash编写post-commit脚本,并且想要将消息传回给正在进行提交的客户端。但是,SVN post-commit hook将消息发送回客户端
echo my message >&2
没有让它回到客户端。甚至有可能用post-commit钩子发回消息?
我正在使用bash编写post-commit脚本,并且想要将消息传回给正在进行提交的客户端。但是,SVN post-commit hook将消息发送回客户端
echo my message >&2
没有让它回到客户端。甚至有可能用post-commit钩子发回消息?
Condering一个post-commit hook作用:
任何标准错误的钩子将被编组回客户端,使其更容易诊断钩子的失败。
你可以检查,如果这不是一个简单的问题帖:
echo "my message" >&2
可以在那些hook examples任何echo
至>&2
包括引号看到。
bash chapter on redirection还包含带引号的示例。
然而,在his answerpmod细节,即标准错误信息将不可见,除非脚本的退出状态从0不同,为“subversion post-commit hook: print an error message that the user can see?”
#!/bin/bash
echo "test" >&2
exit 1
钩子只有在失败时才会显示STDERR(并且您可能现在钩子不显示STDOUT)。 因此,您必须从脚本中返回非零代码,以便将“我的消息”传递给用户(仅在echo后添加出口1)。
看看here:
如果提交后钩子返回非零值,提交将 不会终止,因为它已经完成。但是,钩子打印到stderr的所有内容都将汇总回客户端, 可以更容易地诊断钩子故障。
我有同样的问题所示,与Apache和mod_svn。事实证明,编组失败时编组文本包含&
,<
或>
字符。在用&
,<
和>
代替它们后,文本通过了。
谢谢!这正是我们所面对的mod_svn。永远不会想出来...... –
由于pmod如下所述,如果此(或任何)钩子返回非零返回值,则只会将stderr屏幕打印到客户端。这可能是@CamelBlues遇到的问题。 – physicsmichael
这个答案是错误的。 Pmod有正确的脚本必须返回非0值。 – Catskul