前言解讀
用過SVN的小夥伴們,都應該知道hooks(鉤子)這個功能,的確日常企業內部測試環境經常會用過這個“特殊”的功能,今天來聊一聊SVN hooks
傳統的WEB網站代碼發佈基本依靠手工操作 大概的整個流程如下: 開發本地環境開發代碼 提交SVN版本庫 然後將本地環境代碼使用工具上傳至待發布目錄 備份原WEB站點代碼目錄 發佈新代碼至WEB目錄 基於這類重複操作的問題,爲了提高效率,因此,引入了SVN hooks功能 SVN安裝這裏就不贅述了,需要了解可參考以前的文章(如下鏈接) https://blog.51cto.com/13505030/2089531 安裝完成,開始配置hooks功能 [root@centos ~]#cd /svndata/doc/hooks [root@centos hooks]#ll total 40 -rw-r--r-- 1 root root 1977 Jun 8 23:50 post-commit.tmpl -rw-r--r-- 1 root root 1638 Jun 8 23:50 post-lock.tmpl -rw-r--r-- 1 root root 2289 Jun 8 23:50 post-revprop-change.tmpl -rw-r--r-- 1 root root 1567 Jun 8 23:50 post-unlock.tmpl -rw-r--r-- 1 root root 3426 Jun 8 23:50 pre-commit.tmpl -rw-r--r-- 1 root root 2410 Jun 8 23:50 pre-lock.tmpl -rw-r--r-- 1 root root 2786 Jun 8 23:50 pre-revprop-change.tmpl -rw-r--r-- 1 root root 2100 Jun 8 23:50 pre-unlock.tmpl -rw-r--r-- 1 root root 2780 Jun 8 23:50 start-commit.tmpl 備份下配置文件 [root@centos hooks]#cp post-commit.tmpl post-commit [root@centos hooks]#chmod +x post-commit 修改post-commit配置文件 [root@centos hooks]# vim post-commit #!/bin/sh REPOS="$1" REV="$2" export LC_CTYPE="en_US.UTF-8" export LC_ALL= LOCALPATH="/svncode/test/" WEBPATH=/usr/local/apache-tomcat-8.5.9/webapps/ DATE=`date +%F` SVN=/usr/bin/svn [ ! -d ${LOCALPATH} ] && mkdir ${LOCALPATH} -p ##update code $SVN update ${LOCALPATH} --username=test --password=test123 #backup web dir cd /usr/local/apache-tomcat-8.5.9/webapps/ mv test test.${DATE} ##update code and restart Tomcat service ln -s $LOCALPATH $WEBPATH cd /usr/local/apache-tomcat-8.5.9/bin/ ./shutdown.sh sleep 2 ./startup.sh 備註:SVN服務器與WEB在同一臺服務器上,如果分開,配置是需要有所變化的,以上配置供參考,但方法與步驟相同 首先我們在WEB站點目錄下更新下當前的代碼,這個更新的動作相當於將SVN的代碼目錄在WEB目錄下複製了一個“副本” svn co svn://192.168.4.254:/doc/test /svncode/test/ --username=test01 --password=test123 [root@centos test]# pwd /usr/local/apache-tomcat-8.5.9/webapps/test [root@centos test]# ll total 216 -rw-r--r-- 1 root root 1241 Jun 11 04:06 index.html -rw-r--r-- 1 root root 142943 Jun 10 20:12 server.jpg -rw-r--r-- 1 root root 68533 Jun 10 20:12 u.jpg 打開瀏覽器測試訪問 接下來模擬開發修改相關代碼文件,重新提交了代碼至SVN版本庫 重新打開瀏覽器測試訪問頁面是否更新? 代碼自動更新至WEB目錄完成