我需要一个更聪明的提交后脚本。
如果提交消息表明“添加Revision-v.10.3生产”,则需要执行ssh命令。
是否可以通过提交后执行此操作?
答案 0 :(得分:4)
<击>
没有简单的方法可以从SVN post-commit
挂钩获取提交消息。您可以向svn log
询问该消息,然后将其解析出来。
MESSAGE=$(/usr/bin/svn log "$1" -r HEAD --limit 1 --incremental | sed '1,3d')
来自:here
击>
要从post-commit
获取提交消息,请使用此:
MESSAGE=$(svnlook propget --revprop -r $REV $REPOS_PATH svn:log)
答案 1 :(得分:1)
NO!没有! NO!
您应该做的最后一件事是在提交后执行ssh
!
我不确定你的意图是什么,我认为它们是光荣的。但是,请记住,在提交后挂钩完成执行之前,Subversion不会将控制权返回给客户端。如果您的ssh
命令只需要十秒钟就可以执行,那么用户会看到svn commit
在那里挂了十秒钟才能执行任何操作。
在这十秒钟内,用户将对您,公司和Subversion产生沸腾的仇恨。他们将成为他们以前自我的苦恼之壳,这将是你的错误!你想要那种内疚吗?不这么认为。
最好的解决方案是使用像Jenkins这样的连续构建服务器并执行SSH命令。它可以获取命令的结果,如果失败,则将结果通过电子邮件发送给开发人员及其团队。 Jenkins非常容易设置和使用,通过Jenkins(即正确的方式)这样做不应该花费超过几个小时(最多)。
因此,用户提交不会挂在那里,但他们仍然会获得他们需要的信息。而且,既然你把它绑在Jenkins上,你可能会找到Jenkins的各种插件来做各种你认为不可能的奇妙事情。你将成为英雄并被尊为上帝。这不比激怒仇恨好吗?
选择权在你手中。
(顺便说一句,您可以通过svn propget --rev-prop -r $REV svn:log
)
答案 2 :(得分:0)
仅仅是一个FYI,我刚刚设置的是一个PHP脚本,用于在提交后执行。如果您对PHP感到满意,这将为您提供大量控制,并且可以运行ssh命令。我在这里概述了它: https://stackoverflow.com/a/10146169/654235