[轉]svn提交自動同步到web服務器

參考博文: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

相關文章
相關標籤/搜索