当前位置: 首页 >> Linux >> 【案例】SVN钩子(hooks)的经典使用 >> 正文

【案例】SVN钩子(hooks)的经典使用

8年前 (2016-03-10)     作者:Jiaozn     分类:Linux     阅读次数:3658     评论(0)    

在实际工作中一定有人遇到过这样的问题:

我想在提交代码后立即在web上看到效果,或者是在提交代码的时候能够检查一下我的语法,等等。


其实,这些问题只要用SVN强大hooks就能非常简单的实现,下面的两个例子都是我在实际工作中使用到的。



一、提交代码后在web上立即看到效果

其实原理很简单,就是利用svn的钩子:post-commit,在提交过后想做什么在这个脚本里就写什么。

假设我们的SVN目录是:/home/svn

我们需要同步的web目录是:/home/www/web(前提,这个web目录也是从svn里面检出的)


post-commit

#!/bin/sh

REPOS="$1"

REV="$2"/home/svn/repos/hooks/sync-web.sh $@



sync-web.sh

代码: 全选 #!/bin/sh

REPOS="$1"

REV="$2"

cd /home/www/web 2>&1 >> /tmp/svn.log

sudo /usr/local/bin/svn up 2>&1 >> /tmp/svn.log


二、提交时验证PHP语法

验证语法当然是在代码提交到仓库之前做的事情,所以要使用SVN的钩子:pre-commit


pre-commit

代码: 全选 #!/bin/sh

REPOS="$1"

TXN="$2"


#svn提交时有个参数 -m 用来记录提交信息,下面这一段是为了验证提交信息长度(规范操作嘛,否则svn里真的是一堆垃圾了)

LOGMSG=`svnlook log -t "$TXN" "$REPOS"|grep "[a-zA-Z0-9]"|wc -c`

if [ "$LOGMSG" -lt 9]; then

echo $LOGMSG 1>&2

echo -e "\nLog message is too short" 1>&2

exit 1

fi


# 用当前目录下的syntax-check脚本验证语法

source `dirname $0`/syntax-check


# All checks passed, so allow the commit.

exit 0



syntax-check脚本是从网上找的,我就不复制了,直接传文件了。

 syntax-check.zip PHP语法检查脚本



另外,SVN还有其他可以用的钩子:post-lock,post-revprop-change,post-unlock,pre-lock,pre-revprop-change,pre-unlock,start-commit。具体怎么用,看文档吧。


除非注明,发表在“Jiaozn的博客”的文章『【案例】SVN钩子(hooks)的经典使用 』版权归Jiaozn所有。 转载请注明出处为“本文转载于『Jiaozn的博客』原地址https://www.jiaozn.com/reed/250.html
0

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站

分享:

支付宝

微信