Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何强制SVN post commit向客户端发送消息?_Bash_Svn_Post Commit - Fatal编程技术网

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

Bash 如何强制SVN post commit向客户端发送消息?,bash,svn,post-commit,Bash,Svn,Post Commit,我正在编写一个post-commit钩子,如果某些文件被更改,它会将这些文件发布到Web服务器 我想让客户/用户清楚地知道他提交后会发生什么 这就是为什么我添加了echo命令,将信息返回到客户端 我读过这篇文章:这篇文章说,如果我使用exit 1,post-commit钩子只能返回信息 这非常有效,但会使客户端感到困惑,因为出现以下消息: 警告:提交后挂钩失败,退出代码为1,输出为: 有没有办法绕过这个输出 如果有帮助,我目前的脚本: echo "Everything OK. Checking

我正在编写一个post-commit钩子,如果某些文件被更改,它会将这些文件发布到Web服务器

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

这就是为什么我添加了echo命令,将信息返回到客户端

我读过这篇文章:这篇文章说,如果我使用exit 1,post-commit钩子只能返回信息

这非常有效,但会使客户端感到困惑,因为出现以下消息:

警告:提交后挂钩失败,退出代码为1,输出为:

有没有办法绕过这个输出

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

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,但在我的post commit hook中,我生成并发送电子邮件,然后返回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


例如:回显一切正常。正在检查发布目录是否已更改。>&0

这最终会使可能发生的任何其他实际问题静音。我发现我只需要将回声通过管道传输到正常的programoutput>&0,因为我希望它们总是出现。也许我的问题有误导性。无论如何,谢谢你的回答!这是完全错误的,fds 0和1是反向的。我真的不知道为什么重定向到fd0stdin对您有效,但它肯定不是标准的。