我需要一个更智能的提交后脚本。svn post-commit execute(if message〜Revision.blah)
如果一个提交消息声明类似“Adding Revision-v.10.3 production”,那么需要执行一个ssh命令。
是否可以通过post-commit做到这一点?
我需要一个更智能的提交后脚本。svn post-commit execute(if message〜Revision.blah)
如果一个提交消息声明类似“Adding Revision-v.10.3 production”,那么需要执行一个ssh命令。
是否可以通过post-commit做到这一点?
没有简单的方法从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)
@David:我不知道。由于某些原因,谷歌搜索“svn post-commit get message”并不会返回很多内容。我在答案中发布的链接是我能找到的最多信息。 –
将更正附加到您的答案,我将删除我的评论和downmod。以下是关于[Subversion revprops]的信息(http://svnbook.red-bean.com/nightly/en/svn.ref.properties.html#svn.ref.properties.unversioned-props)。以下是关于[svnlook](http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.tk.svnlook)命令的信息。不要灰心。这是你学习的方式。 –
@David:感谢您的信息:-) –
NO!没有!没有!
您应该做的最后一件事是在提交后执行ssh
!
我不确定你的意图是什么,我认为他们是光荣的。但是,请记住,在提交后挂钩执行完成之前,Subversion不会将控制权返回给客户端。如果您的ssh
命令只需要十秒钟执行,那么用户在他们可以执行任何操作之前看到挂在那里的时间为10秒。
在这十秒钟内,用户会对您,公司和Subversion产生愤怒的仇恨。他们会成为他们以前的自我的emb and,而这将是你的错!你想让你感到内疚吗?没想到。
最好的解决方案是使用像Jenkins这样的连续构建服务器,并且可以执行SSH命令。它可以采取命令的结果,如果失败,则将结果通过电子邮件发送给开发人员及其团队。詹金斯非常容易设置和使用,并且通过詹金斯(即正确的方式)这样做不应超过几个小时(最多)。
因此,用户提交将不会挂在那里,但他们仍然会得到他们需要的信息。而且,既然你把它和詹金斯绑在一起,你可能会发现各种各样的插件给詹金斯,他们会做各种你认为不可能的奇妙的事情。你会成为英雄,并被尊为神。难道不比沸腾的仇恨更好吗?
选择是你的。
只是一个供参考(顺便说一句,你可以做一个svn propget --rev-prop -r $REV svn:log
得到提交信息),我刚刚建立了一个PHP脚本EXECUT上后提交。如果你对PHP感到满意,这会给你很多控制权,并且有可能运行ssh命令。我在这里概述了它: https://stackoverflow.com/a/10146169/654235
REPOS =“$ 1”,REV =“$ 2”是变量......我如何在提交后获取'提交消息'字符串? – Cmag
@Clustermagnet:尝试'MESSAGE = $(/ usr/bin/svn log“$ 1”-r HEAD --limit 1 --incremental | sed'1,3d')'(from [here](http:// www .designified。COM /博客/文章/ 89/AN-svn的,提交后罩-shell脚本到复制的日志,消息和修订号码到了剪贴板上-OS-X) )。 –
@火箭:谢谢! – Cmag