首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制SVN post-commit向客户端发送消息?

如何强制SVN post-commit向客户端发送消息?
EN

Stack Overflow用户
提问于 2012-09-24 22:00:11
回答 3查看 1.6K关注 0票数 1

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

我想让客户端/用户清楚地知道他提交后会发生什么。

这就是为什么我添加了向客户端返回信息的echo命令。

我读到了这篇文章:SVN post-commit hook sending a message back to client,它说post commit挂钩只能在我使用exit 1的情况下返回信息。

这很有效,但它会让客户感到困惑,因为会出现以下消息:

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

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

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

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-25 15:59:34

多亏了斯蒂芬,我搜索了2>/dev/null、2>&1等的含义。

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

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

因此,我只需要将回显通过管道传输到程序输出,即>&0

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

票数 0
EN

Stack Overflow用户

发布于 2012-09-25 00:48:42

您将显式退出,返回代码为1,这表示出现错误。将出口1更改为出口0,您就可以开始工作了。

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

我理解您认为需要返回1,但在我的post-commit钩子中,我生成并发送电子邮件,然后返回0。

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

票数 0
EN

Stack Overflow用户

发布于 2012-09-25 00:48:49

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

代码语言:javascript
复制
svn status /var/www/dev/test/public/projektbereich1/http 2>/dev/null | grep [AMCDG]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12566618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档