SVN簡介和工作原理

subversion(簡稱svn)是近幾年崛起的版本管理軟件,是cvs的接班人,目前絕大多數開源軟件都使用svn作爲代碼版本管理軟件。Subversion支持linux和windows,但較多安裝在linux下。

svn服務器有兩種運行方式:獨立服務器和藉助於apache。 svn://或http://
svn客戶端tortoisesvn
svn的基本工作原理: 在一臺服務器上建立一個源代碼庫,庫裏可以存放許多不同項目的源程序。有源代碼庫管理員統一管理這些源程序。每個用戶在使用源代碼庫之前,首先要把源代碼庫裏的項目文件下載到本地,然後開發人員可以在本地修改,然後用svn命令進行提交,交由代碼庫統一管理修改。
版本控制解決了:
*代碼管理混亂
*解決代碼衝突困難
*在代碼整合期間引發bug
*無法對代碼的擁有者進行權限控制
*項目不同版本的發佈困難

SVN工作原理示意圖:

svn工作原理以及服務搭建和配置

subversion目錄說明:
*dav目錄:是提供apache與mod_dav_svn使用的目錄,讓他們存儲內部數據
*db目錄:就是所有版本控制的數據存放文件
*hooks目錄:放置hook腳本文件的目錄
*locks目錄:用來放置subversion見艱苦鎖定數據的目錄,用來追蹤存取文件庫的客戶端
*format文件:是一個文本文件,裏面只放了一個整數。表示當前文件庫配置的版本號
*conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問賬號、權限等)

SVN Server詳細配置手冊

系統環境
CentOS 5.8 最小化安裝(關閉iptables和selinux) + ssh + yum

一,安裝必須的軟件包.
yum install subversion mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced

說明:
subversion (SVN服務器)
mysql-server (用於codestriker)
httpd mod_dav_svn mod_perl (用於支持WEB方式管理SVN服務器)
sendmail (用於配置用戶提交代碼後發郵件提醒)
wget gcc-c++ make unzip perl* (必備軟件包)
ntsysv vim-enhanced (可選)

二,基本的SVN服務器配置
1,新建一個目錄用於存儲SVN所有文件
# mkdir /home/svn

2,新建一個版本倉庫
# svnadmin create /home/svn/project

3,初始化版本倉庫中的目錄
# mkdir project project/server project/client project/test (建立臨時目錄)
# svn import project/ file:///home/svn/project -m “初始化SVN目錄”
# rm -rf project (刪除臨時建立的目錄)

4,添加用戶
要添加SVN用戶非常簡單,只需在/home/svn/project/conf/passwd文件添加一個形如“username=password”的條目就可以了。爲了測試,我添加了如下內容:

[users]
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
server_group = server_pw
client_group = client_pw
test_group = test_pw

5,修改用戶訪問策略
/home/svn/project/conf/authz記錄用戶的訪問策略,以下是參考:

[groups]
project_p = pm
project_s = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1

[project:/]
@project_p = rw
* =

[project:/server]
@project_p = rw
@project_s = rw
* =

[project:/client]
@project_p = rw
@project_c = rw
* =

[project:/doc]
@project_p = rw
@project_s = r
@project_c = r
@project_t = r
* =

說明:以上信息表示,只有project_p用戶組有根目錄的讀寫權。r表示對該目錄有讀權限,w表示對該目錄有寫權限,rw表示對該目錄有讀寫權限。最後一行的* =表示,除了上面設置了權限的用戶組之外,其他任何人都被禁止訪問本目錄。這個很重要,一定要加上!

6,修改svnserve.conf文件,讓用戶和策略配置升效.
svnserve.conf內容如下:

[general]
anon-access = none
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz

7,啓動服務器
# svnserve -d -r /home/svn
注意:如果修改了svn配置,需要重啓svn服務,步驟如下:

# ps -aux|grep svnserve
# kill -9 ID號
# svnserve -d -r /home/svn

8,測試服務器

# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group沒用根目錄的訪問權 )

# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A    project/test
A    project/server
A    project/client
Checked out revision 1.  ( 測試提取成功 )

# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m “測試一下我的C程序。”
Adding         main.c
Transmitting file data .
Committed revision 2.  ( 測試提交成功 )



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