SVN1.6配置與使用指南
1 創建SVN用戶
#useradd -d /opt/svn -m svn
#passwd svn
1.2 建立版本庫目錄
[root@testbed1 ~]# su - svn
[svn@testbed1 ~]$ mkdir -p /opt/svn/svndata/repos
可建多個,如:
[svn@testbed1 ~]$ mkdir -p /opt/svn/svndata/repos1
[svn@testbed1 ~]$ mkdir -p /opt/svn/svndata/repos2
1.3 建立版本庫
[svn@testbed1 ~]$ svnadmin create /opt/svn/svndata/repos
建立版本庫,默認爲FSFS數據存儲方式,也可以顯示指定
[svn@testbed1 ~]$ svnadmin create --fs-type fsfs /opt/svn/svndata/repos
可以建立多個版本庫,如:
[svn@testbed1 ~]$ svnadmin create /opt/svn/svndata/repos1
[svn@testbed1 ~]$ svnadmin create /opt/svn/svndata/repos2
這樣,一個新的版本庫就被創建出來了。我們來查看一下生成的版本庫結構:
[svn@testbed1 repos]$ ls -l /opt/svn/svndata/repos
total 48
drwxrwxr-x 2 svn svn 4096 Jul 15 15:39 conf
drwxrwsr-x 6 svn svn 4096 Jul 15 12:41 db
-r--r--r-- 1 svn svn 2 Jul 15 12:02 format
drwxrwxr-x 2 svn svn 4096 Jul 15 12:02 hooks
drwxrwxr-x 2 svn svn 4096 Jul 15 12:02 locks
-rw-rw-r-- 1 svn svn 229 Jul 15 12:02 README.txt
其中,conf 目錄下存放了版本庫的配置文件,包括用戶訪問控制和權限控制等內容,文件本身的註釋說明十分詳細,讀者可以根據註釋自行配置;dav 目錄是提供給 Apache 相關模塊的目錄,目前爲空;db 目錄下存放着 Subversion 所要管理的所有受版本控制的數據,不同的存儲方式(Berkeley DB 或者 FSFS)下有着不同的目錄結構,不過我們一般不用直接修改和查看這個目錄下的內容,Subversion 的命令可以安全的操作這個目錄;另外,hooks 目錄存放着鉤子腳本及其模版(一種版本庫事件觸發程序),locks 目錄存放着 Subversion 版本庫鎖定數據,format 文件記錄了版本庫的佈局版本號。
1.4 修改版本庫配置文件
[svn@testbed1 ~]$ vi /opt/svn/svndata/repos/conf/svnserve.conf
內容修改爲:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = repos
1.5 配置允許訪問的用戶
[svn@testbed1 ~]$ vi /opt/svn/svndata/repos/conf/passwd
文件格式如下:
[users]
<用戶1> = <密碼1>
<用戶2> = <密碼2>
其中,[users]是必須的。下面列出要訪問svn的用戶,每個用戶一行。示例:
[users]
User1 = password
User2 = 123456
注意:對用戶配置文件的修改立即生效,不必重啓svn。
1.6 配置用戶訪問權限
[svn@testbed1 ~]$ vi /opt/svn/svndata/repos/conf/authz
用戶組格式:
[groups]
<用戶組名> = <用戶1>,<用戶2>
其中,1個用戶組可以包含1個或多個用戶,用戶間以逗號分隔。
版本庫目錄格式:
[<版本庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
其中,方框號內部分可以有多種寫法:
[/]表示根目錄及以下。根目錄是svnserve啓動時指定的,我們指定爲/opt/svn/svndata,這樣,[/]就是表示對全部版本庫設置權限。
[repos1:/]表示對版本庫1設置權限
[repos2:/abc]表示對版本庫2中的abc項目設置權限
[repos2:/abc/aaa]表示對版本庫2中的abc項目的aaa目錄設置權限
權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權限可以是w、r、wr和空,空表示沒有任何權限。
示例:
[groups]
admingroup = user1,user2,user3
[/]
@admingroup = rw
[repos1:/abc/aaa]
user1 = rw
[repos2:/pass]
user2 =
注意:權限配置文件中出現的用戶名必須已在用戶配置文件中定義,對權限配置文件的修改立即生效,不必重啓svn。
1.7 SVN服務器的啓動與停止
[root@testbed1 ~]# su - svn
[svn@testbed1 ~]$ svnserve -d --listen-port 8009 --listen-host 200.95.160.202 -r /opt/svn/svndata
Binding Port: --listen-port 8009
Binding IP: --listen-host 200.95.160.202
Setting start path: -r /opt/svn/svndata, used for hiding the local path in SVN URL
Full path: svn://200.95.160.202:8009/opt/svn/svndata/repos/AMX_HUB
Hidden path: svn://200.95.160.202:8009/repos/AMX_HUB
[svn@testbed1 ~]$ ps -ef | grep svnserve
svn 1985 1 0 12:38 ? 00:00:00 svnserve -d --listen-port 8009 --listen-host 200.95.160.202 -r /opt/svn/svndata
svn 14549 13477 0 14:42 pts/1 00:00:00 grep svnserve
[svn@testbed1 ~]$kill -9 1985
1.8 在版本庫裏面添加項目
Subversion 的靈活性允許用戶自由佈局版本庫,但有一套推薦的方式,創建一個 trunk
目錄來保存開發的“主線”,一個 branches 目錄存放分支拷貝,tags 目錄保存標籤拷貝,當然,SVN也不限於代碼庫的管理,用戶完全可以自定義佈局用以共享文件。
添加項目最好的辦法就是用svn import命令導入已有的目錄樹,首先,在一個臨時目錄下,根據 Subversion 版本控制的一般佈局結構,創建出項目的主要目錄樹。
/opt/svn/tmp
|
――demo_project
| |
| ――branches
| |
| ――tags
| |
| ――trunk
[svn@testbed1 ~]$ mkdir tmp
[svn@testbed1 ~]$ mkdir -p /opt/svn/tmp/demo_project/branches
[svn@testbed1 ~]$ mkdir -p /opt/svn/tmp/demo_project/tags
[svn@testbed1 ~]$ mkdir -p /opt/svn/tmp/demo_project/trunk
[svn@testbed1 ~]$ svn import /opt/svn/tmp/ file:///opt/svn/svndata/repos/ --message "init"
Adding /opt/svn/tmp/demo_project
Adding /opt/svn/tmp/demo_project/trunk
Adding /opt/svn/tmp/demo_project/branches
Adding /opt/svn/tmp/demo_project/tags
Committed revision 2.
1.9版本庫查看
[svn@testbed1 ~]$ svn list --verbose file:///opt/svn/svndata/repos
4 svn Jul 15 16:02 ./
4 svn Jul 15 16:02 AMX_HUB/
2 svn Jul 15 15:56 demo_project/
查看最新修訂版本的信息,可以使用svnlook info命令
[svn@testbed1 ~]$ svnlook info /opt/svn/svndata/repos/
svn
2010-07-15 16:02:18 -0500 (Thu, 15 Jul 2010)
4
Init
命令輸出了這個版本庫的最新修訂版本信息,包括作者、時間、日誌字數和日誌內容等。除開最新修訂版以外,我們還可以在命令後面接上 “--revision 版本號” 來指定某一個修訂版的顯示。
另外,我們還可以用如下命令來顯示版本庫的具體樹形結構,後面的 “--show-ids” 選項指定顯示每一個顯示元素的修改版本 ID。
[svn@testbed1 ~]$ svnlook tree /opt/svn/svndata/repos/ --show-ids
/ <0.0.r4/154>
AMX_HUB/ <0-4.0.r4/0>
demo_project/ <0-2.0.r2/345>
trunk/ <2-2.0.r2/0>
branches/ <4-2.0.r2/76>
tags/ <5-2.0.r2/156>
[svn@testbed1 ~]$
1.10 TortoiseSVN客戶端訪問版本庫
Windows常用客戶端下載地址:http://tortoisesvn.net/downloads
安裝並配置好SVN服務器後,就可以在客戶端通過svn協議來訪問svn服務器了。如果希望通過瀏覽器或HTTP協議進行訪問,則需要安裝配置Apache HTTP Server。
大多數時候,我們會使用 checkout 從版本庫取出一個新拷貝,開始使用 Subversion,這樣會在本機創建一個項目的“本地拷貝”,這個拷貝包括了命令行指定版本庫中的 頂點(最新的)版本。因爲可以使用版本庫的 URL 作爲唯一參數取出一個工作副本,也可以在版本庫 URL 之後指定一個目錄,這樣會將工作目錄放到你的新目錄。