參考博文:http://my.oschina.net/wddqing/blog/201567html
同步程序思路:用戶提交程序到SVN,SVN觸發hooks,按不一樣的hooks進行處理,這裏用到的是post-commit,利用post-commit到代碼檢出到SVN服務器的本地硬盤目錄,再經過rsync同步到遠程的WEB服務器上。python
知識點:linux
一、SVN的hooksweb
# start-commit 提交前觸發事務編程
# pre-commit 提交完成前觸發事務vim
# post-commit 提交完成時觸發事務bash
# pre-revprop-change 版本屬性修改前觸發事務服務器
# post-revprop-change 版本屬性修改後觸發事務svn
經過上面這些名稱編寫的腳本就就能夠實現多種功能了,至關強大。post
二、同步命令rsync的具體參數使用
三、具備基個語言的編程能力bash python perl均可以實現
post-commit具體實現細節
post-commit腳本
編輯文件:sudo vim /home/svn/fitness/hooks/post-commit
注意:編輯完成post-commit後,執行:sudo chmod 755 post-commit
內容:
#!/bin/sh
export LANG=zh_CN.UTF-8
sudo /usr/bin/svn update /var/www/www --username mirze --password 123456
REPOS="$1" REV="$2" export LANG=zh_CN.UTF-8 #設定語言,根據系統語言設置,若是是UTF-8 就設置爲 LANG=zh_CN.UTF-8 SVN_PATH=/usr/bin/svn SVN_USER=user SVN_PASD=passwd WEB_PATH=/var/www/website/weixin WEB_IP="192.168.197.1" RSYNC=rsync LOG_PATH=/tmp/svn_update.log svn export "svn://192.168.197.1/test" $WEB_PATH --username $SVN_USER --password $SVN_PASD --force chown -R yzxx:yzxx /var/www/website/weixin/ chmod -R 777 /var/www/website/weixin/\#runtime
這個是已提交就自動更新覆蓋原有路徑。
還有一個是須要用戶提交時輸入關鍵字;例如:auto-load,才更新,哪一個博文找不到了,找到後再貼上!
linux下svn定時更新項目(這個做爲參考,放到服務器上不合適,更新太費資源) http://blog.sina.com.cn/s/blog_920dea7a01014nm8.html
有個複雜的還沒看:http://os.51cto.com/art/201410/454887.htm
SVN命令使用詳解 http://blog.sina.com.cn/s/blog_963453200101eiuq.html