我正在编写一个提交后钩子,如果某些文件发生更改,它会将它们发布到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:
有没有办法绕过这种输出?
如果有帮助,到目前为止我的脚本如下:
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发布于 2012-09-25 15:59:34
多亏了斯蒂芬,我搜索了2>/dev/null、2>&1等的含义。
事实证明,程序使用3个管道来传输信息:
因此,我只需要将回显通过管道传输到程序输出,即>&0
例如: echo "Everything OK. Checking if publishing dir was changed." >&0
发布于 2012-09-25 00:48:42
您将显式退出,返回代码为1,这表示出现错误。将出口1更改为出口0,您就可以开始工作了。
或者,设置一个变量来保存else的每个分支中的返回代码。如果成功,则返回0;如果失败,则返回1,最后退出$myreturncode。
我理解您认为需要返回1,但在我的post-commit钩子中,我生成并发送电子邮件,然后返回0。
如果希望svn框架为您发送错误,则只需返回1即可。在成功的情况下,你需要处理“它成功了!”您自己发送消息/电子邮件。
发布于 2012-09-25 00:48:49
如果您的问题是屏蔽svn错误消息,则可以执行以下操作:
svn status /var/www/dev/test/public/projektbereich1/http 2>/dev/null | grep [AMCDG]https://stackoverflow.com/questions/12566618
复制相似问题