11

我正在用 bash 编写提交后脚本,我想将消息传递回进行提交的客户端。然而

echo my message >&2

没有返回给客户。甚至可以使用提交后挂钩发回消息吗?

4

3 回答 3

13

只有当它失败时,Hook 才会显示 STDERR(正如你现在可能看到的那样,hook 不会显示 STDOUT)。因此,您必须从脚本返回非零代码才能将“我的消息”传递给用户(只需在 echo 后添加exit 1 )。

看看这里

如果 post-commit 钩子返回非零退出状态,则提交将不会中止,因为它已经完成。但是,任何打印到 stderr 的钩子都将被编组回客户端,从而更容易诊断钩子故障。

于 2011-12-08T07:02:17.307 回答
6

考虑提交后挂钩会:

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

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

echo "my message" >&2

您可以在这些钩子示例中看到 any echoto>&2包含引号。

关于重定向的bash 章节还包括带引号的示例。

但是,正如pmod在他的回答中详细说明的那样,除非脚本的退出状态不同于 0,否则 stderr 消息将不可见,如“ subversion post-commit hook: print an error message that the user can see? ”中所示。

#!/bin/bash
echo "test" >&2
exit 1
于 2011-12-08T07:04:09.143 回答
4

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

于 2012-03-07T16:29:14.043 回答