svn提交自動同步到web目錄

環境:CentOS6.5  測試線   svn和web服務器在同一臺機器上   SVN版本1.6php

情景:在測試環境下,開發部提出但願提交到SVN的代碼能自動同步到WEB站點目錄下,解決每次都要傳雙份這一問題,尤爲是頻繁更新後的繁瑣,浪費了大量時間。web

思路:經過搜索,查到svn的hooks目錄的觸發功能,該目錄下有許多模板,其中一個是post-commit.tmpl,意爲「提交後執行」,經過這個功能咱們能夠將提交代碼後要作的事寫到裏面來執行。服務器

步驟:網絡

1. 首先導出一份svn的文件到網站目錄svn

# svn co file:///data/svn/php/ /data/wwwroot/post

注:file:///data/svn/php/ 表示php的svn代碼在該Linux系統中的系統路徑。測試

2. 修改「提交後執行文件」post-commit.tmpl優化

# cd /data/svn/php/hooks網站

# mv post-commit.tmpl  post-commitspa

# chmod +x post-commit

# cat post-commit

#!/bin/sh
SVN=/usr/bin/svn
WEB=/data/wwwroot
LOG_PATH=/tmp/svn_hook.log
echo "------------Start Commit -----------" >> $LOG_PATH
echo "Time:"`date '+%Y-%m-%d %T'`>>$LOG_PATH
export LANG='zh_CN.UTF-8' #防止亂碼 
for DIR in `svnlook dirs-changed /data/svn/php/`
do $SVN update $WEB/$DIR
done

chown -R www.www /data/wwwroot

 

備註:因爲文件太多太大,第一次作的時候SVN和WEB不在同一臺機器,並且沒有進行提交優化,因此SVN提交後巨卡(10秒到30秒)!

筆者在此文中寫的已經是進行了兩步優化後的結果,優化的內容爲如下兩點:

① 將SVN和WEB放到了同一臺機器,比提交後觸發rsync有所加快,而且不依賴網絡。

② 經過「svnlook dirs-changed  網站目錄」,打印出SVN更新了哪些目錄,svn update只針對這些目錄,節省了全局掃描浪費掉的時間!

優化後平均提交後響應時間在3秒內!

相關文章
相關標籤/搜索