svn提交自動同步到web目錄


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

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

思路:通過搜索,查到svn的hooks目錄的觸發功能,該目錄下有許多模板,其中一個是post-commit.tmpl,意為“提交后執行”,通過這個功能我們可以將提交代碼后要做的事寫到里面來執行。

步驟:

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

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

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

2. 修改“提交后執行文件”post-commit.tmpl

# cd /data/svn/php/hooks

# mv post-commit.tmpl  post-commit

# 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秒內!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM