1.安裝svn
- yum install -y subversion
2.驗證安裝是否成功
- svnserve --version //回提示如下:
-
svnserve,版本 1.6.11 (r934486)
編譯於 Mar 6 2014,10:33:29
版權所有 (C) 2000-2009 CollabNet。
Subversion 是開放源代碼軟件,請參閱 http://subversion.tigris.org/ 站點。
此產品包含由 CollabNet(http://www.Collab.Net/) 開發的軟件。
下列版本庫後端(FS) 模塊可用:
* fs_base : 模塊只能操作BDB版本庫。
* fs_fs : 模塊與文本文件(FSFS)版本庫一起工作。
Cyrus SASL 認證可用。
3.創建svn版本庫
- mkdir svn
- svnadmin create svn/repository //repository是版本庫文件
4.配置svn
創建版本庫後,在這個版本庫的conf目錄下會生成3個配置文件
(1)svnserve.conf: svn服務綜合配置文件。
(2)passwd: 用戶名口令文件。
(3)authz: 權限配置文件。
4.1 修改passwd文件
- [users]
- hello = world
注:hello爲用戶名,world爲密碼
4.2修改authz文件
注:repository爲之前建立的svn版本庫名稱
- [groups]
- team=shang,li
- [repository:/]
- @team=rw
4.3修改svnserve.conf
- [general]
- anon-access = none //匿名用戶的權限,如果是rw就是可讀可寫權限,這裏設置爲無
- auth-access = write //認證過的用戶的權限
- password-db = passwd //認證用戶的文件
- authz-db = authz //認證用戶權限的文件
5.啓動和停止svn
6.svn和web服務器同步
思路:
找到SVN Server中的倉庫(Repositories)文件夾的位置,在相應的項目文件夾中找到hooks文件夾。在該文件夾中添加一個post-commit文件;當有commit動作發生時(提交到SVN Server時)就會執行這個post-commit文件,在該文件實現數據的複製。
6.1.創建web目錄(已有目錄則略過)
cd /var
mkdir -p www/html
chmod 777 www/html
2.檢出副本到/var/www/html
svn co file:///svn/repository /var/www/html
此時web目錄/var/www/html是SVN版本庫的一個工作副本
3.增加hooks(鉤子)文件
在/svn/repository/hooks/目錄中
# start-commit 提交前觸發事務
# pre-commit 提交完成前觸發事務
# post-commit 提交完成時觸發事務
# pre-revprop-change 版本屬性修改前觸發事務
# post-revprop-change 版本屬性修改後觸發事務
我們這裏只需要修改post-commit文件:
cp post-commit.tmpl post-commit
編輯該文件
vim /svn/repository/hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
# 加入以下兩行
export LANG=zh_CN.UTF-8 //防止中文亂碼
svn update /var/www/html //一般svn的update命令是需要記住密碼的,這樣寫的話必須現在/var/www/html裏面 svn update一下,輸入密碼之後可以讓服務器記住密碼,如果嫌麻煩,這條命令可以改爲 svn update /var/www/html username=hello password=world (這裏的hello和world爲之前設定的賬號和密碼)。
保存後需要修改post-commit文件權限爲755,否則SVN無法調用執行
chmod 755 post-commit