Subversion 使用二進(jìn)制差異算法來異表示文件的差異, 它對文字(人類可理解的)與二進(jìn)制文件(人類無法理解的) 兩類的文件都一視同仁。 這兩類的文件都相同地以壓縮形式儲存在檔案庫中, 并且文件差異是以兩個(gè)方向在網(wǎng)絡(luò)上傳輸?shù)摹?/div>
在分支與標(biāo)簽上的消耗并不必一定要與項(xiàng)目大小成正比。 Subversion 建立分支與標(biāo)簽的方法, 就僅僅是復(fù)制該項(xiàng)目, 使用的方法就相似于硬連接(hard-link)。 所以這些操作僅僅會花費(fèi)非常小, 并且是固定的時(shí)間。
Subversion沒有不論什么的歷史包袱; 它主要是一群共用的 C 程序庫, 具有定義完好的API。這使得 Subversion 便于維護(hù), 而且可被其他應(yīng)用程序與程序語言使用。
二. SVN server搭建
2.1 使用yum 安裝SVN包
關(guān)于YUM server的配置參考:
Linux 搭建 YUM server
http://blog.csdn.net/tianlesoftware/archive/2011/01/03/6113902.aspx
[root@singledb ~]# yum install -y subversion Loaded plugins: rhnplugin, security This system is not registered with RHN. RHN support will be disabled. Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package subversion.i386 0:1.4.2-4.el5_3.1 set to be updated --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================== Package Arch Version Repository Size ==================================================================================================== Installing: subversion i386 1.4.2-4.el5_3.1 rhel-base 2.3 M Transaction Summary ==================================================================================================== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 2.3 M Downloading Packages: subversion-1.4.2-4.el5_3.1.i386.rpm | 2.3 MB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : subversion 1/1 Installed: subversion.i386 0:1.4.2-4.el5_3.1 Complete! |
[root@singledb ~]#
驗(yàn)證安裝版本號:
[root@singledb ~]# svnserve --version svnserve, version 1.4.2 (r22196) compiled Aug 5 2009, 19:03:56 Copyright (C) 2000-2006 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet |
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
2.2 創(chuàng)建SVN 版本號庫
[root@singledb ~]# mkdir /u02/svn
[root@singledb ~]# svnadmin create /u02/svn/davesvn --davesvn為版本號庫名稱
2.3 SVN 配置
創(chuàng)建版本號庫后,在這個(gè)文件夾下會生成3個(gè)配置文件:
[root@singledb conf]# pwd
/u02/svn/davesvn/conf
[root@singledb conf]# ls
authz passwd svnserve.conf
(1)svnserve.conf: svn服務(wù)配置文件下。
(2)passwd: username口令文件。
(3)authz: 權(quán)限配置文件。
svnserve.conf 文件, 該文件配置項(xiàng)分為下面5項(xiàng):
anon-access: 控制非鑒權(quán)用戶訪問版本號庫的權(quán)限。
auth-access: 控制鑒權(quán)用戶訪問版本號庫的權(quán)限。
password-db: 指定username口令文件名稱。
authz-db:指定權(quán)限配置文件名稱,通過該文件能夠?qū)崿F(xiàn)以路徑為基礎(chǔ)的訪問控制。
realm:指定版本號庫的認(rèn)證域,即在登錄時(shí)提示的認(rèn)證域名稱。若兩個(gè)版本號庫的認(rèn)證域同樣,建議使用同樣的username口令數(shù)據(jù)文件
Passwd 文件 :
我們在svnserve.conf文件中啟用這個(gè)文件。然后配置例如以下:
[root@singledb conf]# cat passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
dave = davepwd
tianlesoftware = tianlesoftwarepwd
authz 文件 :
在網(wǎng)上找到一個(gè)非常好的配置樣例:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
--這里把不同用戶放到不同的組里面,以下在設(shè)置文件夾訪問權(quán)限的時(shí)候,用文件夾來操作就能夠了。
# 為全部庫指定默認(rèn)訪問規(guī)則
# 全部人能夠讀,管理員能夠?qū)懀<狈肿記]有不論什么權(quán)限
[/] --相應(yīng)我測試?yán)锏模?u02/svn 文件夾
* = r
@admin = rw
dangerman =
# 同意開發(fā)者能夠全然訪問他們的項(xiàng)目版本號庫
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文檔編寫人員對全部的docs文件夾有寫權(quán)限
[/trunk/doc]
@docs = rw
# 培訓(xùn)人員能夠全然訪問培訓(xùn)版本號庫
[TrainingRepos:/]
@training = rw
以下我們來配置我們的authz文件:
[root@singledb conf]# cat authz
[groups]
admin = dave
dev=tianlesoftware
[davesvn:/]
@admin = rw
@dev = rw
[root@singledb conf]#
2.4 啟動(dòng)和停止SVN服務(wù)
(1)啟動(dòng)SVN服務(wù):
[root@singledb conf]# svnserve -d -r /u02/svn
-d表示后臺執(zhí)行
-r 指定根文件夾是 /u02/svn
[root@singledb conf]# ps -ef | grep svn
root 4592 1 0 18:04 ? 00:00:00 svnserve -d -r /u02/svn
root 4594 3709 0 18:04 pts/1 00:00:00 grep svn
(2)停止SVN服務(wù):
ps -aux |grep svn
kill -9 進(jìn)程殺掉三. client連接SVN server
3.1 安裝TortoiseSVN client
下載地址在第一節(jié)已說明。
3.2 找到自己項(xiàng)目的文件夾,右擊,進(jìn)行SVN 操作
(1)新建測試文件夾svn,進(jìn)入后右鍵,點(diǎn)checkout:
SVN server的IP地址和版本號庫名稱。
新建個(gè)文件svn.txt. 把這個(gè)文件上傳到SVNserver(add):