1.環境
centos6.4
2.安裝svn
yum -y install subversion
3.配置
建立版本庫目錄
mkdir /usr/svn
svnserve -d -r /usr/svn 啟動svn服務
4.建立版本庫
創建一個新的Subversion項目
svnadmin create /usr/svn/project
配置允許用戶user訪問 將注釋去掉
cd /usr/svn/project/conf
vi svnserve.conf
anon-access=read
auth-access=write
password-db=passwd
注:修改的文件前面不能有空格,否則啟動svn server出錯
vi passwd
[users]
#<用戶1> = <密碼1>
#<用戶2> = <密碼2>
user=123456
vi authz 添加用戶組
此時版本庫已經建好了
######################################
客戶端使用svn
svn co svn://ip/project
6.實現SVN與WEB同步,可以CO一個出來,也可以直接配在倉庫中
1)設置WEB服務器根目錄為/var/www/webroot
2)checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改權限為WEB用戶
chown -R apache:apache /var/www/webroot/njlrxx
3)建立同步腳本
cd /var/www/svndata/njlrxx/hooks/
cp post-commit.tmpl post-commit
編輯post-commit,在文件最后添加以下內容
REPOS="$1" REV="$2" BASEPATH=/var/www/webroot/njlrxx WEBPATH="$BASEPATH/" export LANG=zh_CN.UTF-8 svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache
增加腳本執行權限
chmod +x post-commit
最后操作是關閉服務然再打開服務:
svn服務的關閉:
killall svnserve
svn開啟:
svnserve -d -r /var/www/svndata
===============================================================
SVN自動同步程序執行流程:
1、用戶提交文件到SVN服務器,提交操作成功后觸發post-commit腳本
2、在post-commit版本文件中使用php_script.php執行PHP腳本
3、在PHP腳本中通過exec系統調用更新服務器上的版本庫工作副本
4、根據更新操作結果日志,對另一個SVN版本庫進行對應的操作處理
svn有兩種存儲方式:BDB和FSFS,目前用的最多的是FSFS方式,這種方式的話,一般是存儲在\db\revs文件夾下,里面有一堆以版本號命名的文件,如:0、1、2、3、4......,那個就是了。
svn先把0版本的狀態壓縮成1個文件,然后每次版本更新時就針對變動的部分做一個壓縮文件,每次都是增加一個增量包,最后在服務器上能看到文件名為從0開始到最終版本的一系列文件