svn+post-commit實現自動部署

一、安裝
#yum install subversion
檢查是否安裝了svn
#subversion –v
創建svn庫和對應的目錄
#mkdir /svn/www.test.com
#svnadmin create /svn/www.test.com
二、配置
創建登錄svn的用戶和密碼
#vim /svn/www.test.com/conf/passwd
[users]
用戶名=密碼
設置svn用戶權限
#vim /svn/www.test.com/conf/authz
[/]
用戶名=rw
設置svn主配置文件
#vim /svn/www.test.com/conf/
anon-access=none #使非授權用戶無法訪問
auth-access=write #使授權用戶有寫權限
password-db=password
authz-db=authz #啓用訪問控制文件
realm=/svn/www.test.com #認證命名空間,subversion會在認證提示裏顯示,並且作爲憑證緩存的關鍵字。
啓用svn:#svnserve –d –r /svn/www.test.com
注可以用—listen-port 參數修改svn的端口
三、連接svn
1、linux主機連接svn
#svn co svn://192.168.1.180
輸入用戶名和密碼後就可以將svn上的數據下載到本地。
2、windows主機連接svn
利用TortoiseSVN工具進行連接。
四、利用svn的post-commit將svn服務器的文件同步更新到固定的目錄
#cd /svn/www.test.com/hooks
#cp post-commit.tmpl post-commit
#chmod a+x post-commit
編輯post-commit鉤子腳本
#vim post-commit
export LANG=zh_CN.UTF-8 #設定環境變量,如果沒有設定可能會出現update報錯
SVN=/usr/bin/svn
WEB=/usr/local/apache/htdocs/192.168.1.180
${SVN} update ${WEB} --username rsync --password rsync
注:WEB中指定的目錄不能爲空目錄,需要先checkout
 
報錯註解,及解決辦法:
1、
svn: Error converting entry in directory '/usr/local/apache/htdocs/192.168.1.180' to UTF-8
svn: Can't convert string from native encoding to 'UTF-8':
svn: ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 ?\229?\164?\141?\228?\187?\182 rsync-3.0.9.tar.gz
原因:svn服務器上的文件存在編碼爲UTF-8的文件,如果服務器不支持UTF-8編碼就會報這個錯誤。
解決辦法:在post-commit鉤子腳本中,添加export LANG=zh_CN.UTF-8字段,更改環境變量中的編碼。
2、
Skipped '/usr/local/apache/htdocs/192.168.1.180'
這個時候使用命令svn update命令會提示
Skipped ‘.’
原因:192.168.1.180是一個空目錄或這個目錄不存在
解決辦法:先進行手工的checkout,之後再post-commit中將目錄指定到checkout的目錄,就解決了。

本文出自 “空の心” 博客,請務必保留此出處http://songknight.blog.51cto.com/2599480/742725

 

 

http://songknight.blog.51cto.com/2599480/742725

發佈了9 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章