1. 程式人生 > >SVN鉤子 hooks 的經典使用

SVN鉤子 hooks 的經典使用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                在實際工作中一定有人遇到過這樣的問題:
我想在提交程式碼後立即在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
[email protected]





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。具體怎麼用,看文件吧。           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述