如何强制 SVN 提交后向客户端发送消息



我正在编写一个提交后的钩子,如果某些文件被更改,它将某些文件发布到Web服务器。

我想向客户/用户明确说明他提交后会发生什么。

这就是我添加向客户端返回信息的 echo 命令的原因。

我读了这篇文章:SVN 提交后钩子向客户端发送一条消息,该消息说提交后钩子只有在我使用出口 1 时才能返回信息。

这很好用,但它会使客户端感到困惑,因为出现以下消息:

Warning: post-commit hook failed (exit code 1) with output:

有没有办法绕过这个输出?

如果有帮助,到目前为止我的脚本:

echo "Everything OK. Checking if publishing dir was changed." >&2
svn status /var/www/dev/test/public/projektbereich1/http | grep [AMCDG]
if [ $? -eq 0 ]  ; then
    echo "Dir has changed. Publishing files." >&2
cp -R /var/www/dev/test/public/projektbereich1/http /var/www/public/
else
    echo "Dir has not changed. Webserver does not get updated." >&2
fi
exit 1

您显式退出时返回代码为 1,这表示错误。 将出口 1 更改为出口 0,您应该很高兴。

或者,设置一个变量以保存 else 的每个分支中的返回代码。 如果成功,则为 0,如果失败则为 1,则在最后退出 $myreturncode。

我知道您认为您需要返回 1,但在我的提交后钩子中,我生成并发送电子邮件,然后返回 0。

如果您希望 svn 框架为您发送错误,则只需返回 1。 在成功的情况下,您需要自己处理"它奏效了!"消息/电子邮件。

如果您的问题是屏蔽svn错误消息,您可以执行以下操作:

svn status /var/www/dev/test/public/projektbereich1/http 2>/dev/null | grep [AMCDG]

感谢Stephane,我搜索了2>/dev/null、2>&1等的含义。

事实证明,程序使用 3 个管道来传输信息:

  • 0:正常输出(标准输出)
  • 1:正常输入(标准输入)
  • 2:错误输出(标准输出)

所以我只需要将我的回声管道传输到程序输出,这是>&0

例如:回声"Everything OK. Checking if publishing dir was changed." >&0

相关内容

  • 没有找到相关文章

最新更新