SVN鉤子 hooks 的經典使用
阿新 • • 發佈:2018-11-12
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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
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。具體怎麼用,看文件吧。