kkx給大家分享的Subversion(簡稱SVN)是一個開源的版本控制系統(tǒng),它可以幫助軟件團(tuán)隊(duì)協(xié)作開發(fā)和管理項(xiàng)目的源代碼。Subversion 的主要功能包括版本控制、文件追蹤、分支和標(biāo)記、版本歷史記錄、權(quán)限管理等。Subversion 最初是由 CollabNet 公司開發(fā),其中的版本號遵循 Apache Group 的規(guī)范,即主版本號.次版本號.修正版本號,在 Subversion 中也叫做 release.major.minor。Subversion 使用一種名為“復(fù)制-修改-合并”的機(jī)制來管理源代碼的版本,這種機(jī)制確保團(tuán)隊(duì)成員之間的修改不會互相沖突。Subversion 有一個命令行工具,也有多個圖形化的客戶端工具,例如 TortoiseSVN、eclipse svn插件、subclipse等。Subversion 使用 Apache License 2.0 發(fā)布,成為 Apache 基金會的頂級項(xiàng)目之一。它已經(jīng)廣泛應(yīng)用于許多開源項(xiàng)目和商業(yè)項(xiàng)目中。
Subversion1.9.5安裝配置
由于subversion只是一個服務(wù)器,用戶想要可視化界面的話需要Tortoisesvn/soft/5287.html來進(jìn)行可視化操作。
1、建立目錄,存放所有倉庫,這里為 "D:\svnhome"。
2、創(chuàng)立獨(dú)立倉庫,存放各個項(xiàng)目(project1, project2)
svnadmin create D:\svnhome\project1
svnadmin create D:\svnhome\project2
好了,有些朋友可能會出現(xiàn)下面的問題:

沒關(guān)系,我們可以把工作目錄切換到Subversion的安裝目錄下
在這里,我的Subversion安裝目錄是:D:\Program Files\Subversion,那么,可執(zhí)行文件就在 D:\Program Files\Subversion\bin里面了。

當(dāng)然,你也可以使用Tortoisesvn創(chuàng)建倉庫,先建立一個倉庫目錄D:\svnhome\project1,在project1上面點(diǎn)擊右鍵,如下

3、啟動服務(wù)器
svnserve -d -r D:\svnhome
至此,你的SVN服務(wù)器已經(jīng)可以訪問了!訪問地址為:
svn://127.0.0.1/project1 或 file:///D:/svnhome/project1
svn://127.0.0.1/project2 或 file:///D:/svnhome/project2
如果不是在本機(jī)訪問,必須把回路IP改成局域網(wǎng)或公網(wǎng)IP。注意你家的防火墻!
四、服務(wù)器簡單配置
1、編輯文件 D:\svnhome\project1\conf\svnserve.conf (庫配置文件),加入下面幾行!每行前面不能有任何字符,不然會報錯!
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
2、編輯文件 D:\svnhome\project1\conf\passwd (存放用戶及密碼),增加新用戶,加入
[users]
admin=123456
3、編輯文件 D:\svnhome\project1\conf\authz (權(quán)限相關(guān)),給admin寫入權(quán)限,加入
[/]
admin=rw
現(xiàn)在,你就可以該用戶來訪問你的SVN服務(wù)器了。
以上步驟均基于Windows操作系統(tǒng),至于Linux的,也是差不多的,這里就不多說了。
至于服務(wù)器權(quán)限的高級配置,再探討。
Subversion1.9.5功能
·包含絕大部分CVS的功能
CVS是最基本的版本控制系統(tǒng)。Subversion包含了CVS的大部分功能,并且針對有些功能還稍加改進(jìn)。
·目錄的版本化
Subversion將目錄名以版本號的形式體現(xiàn)。
·基于版本的復(fù)制,刪除和重命名
無論復(fù)制、刪除還是重命名,都會被打上版本號,盡管這聽上去有些奇怪。
·自由的版本化元數(shù)據(jù)操作
Subversion允許任何元數(shù)據(jù)附加在文件或目錄中。這些屬性是鍵/值對,并且被版本化。Subversion也提供對修訂版附加任何鍵/值屬性的方法,這些屬性不會被版本化,因?yàn)樗麄儠詣訉⒃獢?shù)據(jù)附加到版本空間中,但他們可以隨時被更改。
·混合追蹤
Subversion 1.5開始加入了混合追蹤功能。
·文件鎖
支持文件鎖定,當(dāng)多個用戶試圖編輯同一個文件時會收到警告。
·Apache網(wǎng)絡(luò)服務(wù)的支持,基于WebDAV/DeltaV協(xié)議
使用基于HTTP的WebDAV/DeltaV協(xié)議進(jìn)行網(wǎng)絡(luò)通信,而Apache網(wǎng)絡(luò)服務(wù)器提供網(wǎng)絡(luò)存儲的站點(diǎn)服務(wù)。
·可執(zhí)行的標(biāo)簽
當(dāng)一個文件是可執(zhí)行的時候,Subversion會提示,并且當(dāng)這個可執(zhí)行的文件被放在版本控制中時,Subversion會防止該程序檢查其他目錄。
·獨(dú)立進(jìn)程模式
Subversion可以運(yùn)行在獨(dú)立模式下
·一個只讀的存儲鏡像
Subversion提供一個工具,SVNsync, 用于同步主服務(wù)器上的 文件到一個子存儲服務(wù)器上,并且標(biāo)為只讀的屬性
SVN與CVS對比的優(yōu)點(diǎn)
* 統(tǒng)一的版本號。CVS是對每個文件順序編排版本號,在某一時間各文件的版本號各不相同。而Subversion下,任何一次提交都會對所有文件增加到同一個新版本號,即使是提交并不涉及的文件。所以,各文件在某任意時間的版本號是相同的。版本號相同的文件構(gòu)成軟件的一個版本。
* 原子提交。一次提交不管是單個還是多個文件,都是作為一個整體提交的。在這當(dāng)中發(fā)生的意外例如傳輸中斷,不會引起數(shù)據(jù)庫的不完整和數(shù)據(jù)損壞。
* 重命名、復(fù)制、刪除文件等動作都保存在版本歷史記錄當(dāng)中。
* 對于二進(jìn)制文件,使用了節(jié)省空間的保存方法(簡單的理解,就是只保存和上一版本不同之處)。
* 目錄也有版本歷史。整個目錄樹可以被移動或者復(fù)制,操作很簡單,而且能夠保留全部版本記錄。
* 分支的開銷非常小。
* 優(yōu)化過的數(shù)據(jù)庫訪問,使得一些操作不必訪問數(shù)據(jù)庫就可以做到,這樣減少了很多不必要的和數(shù)據(jù)庫主機(jī)之間的網(wǎng)絡(luò)流量。
Subversion1.9.5特性
Subversion適用:
版本變的目錄
CVS只有追蹤單獨(dú)文件的變動歷史時間,可是Subversion達(dá)到的“虛似”版本化文件系統(tǒng)軟件則可追蹤目錄樹變動。在Subversion中,文件和目錄全是版本變的。
真實(shí)版本歷史時間
因?yàn)橹挥凶粉檰为?dú)文件的變動,CVS沒法適用如文件復(fù)制和更名這種比較常見的操作——這種操作影響了目錄內(nèi)容。一樣,在CVS中,一個目錄中的文件只需名稱同樣即有相同歷史,即便這種同名的文件古代歷史無關(guān)。但在Subversion中,能夠?qū)ξ募蚰夸涢_展提升、復(fù)制和更名操作,也解決了同名的而不相干的文件間的歷史時間聯(lián)絡(luò)難題。
分子遞交
一系列有關(guān)的變更,要不所有提交到版本庫,要不一個都不遞交。那樣客戶就可以把有關(guān)的變更組成一個邏輯性總體,避免出現(xiàn)僅有一部分改動提交到版本庫的現(xiàn)象。
版本變的數(shù)據(jù)庫
每一個文件和目錄都有各自的一組屬性——鍵合值,可以根據(jù)實(shí)際情況創(chuàng)建并存放一切鍵/值對。與文件自身的具體內(nèi)容一樣,屬性還在版本操縱下。
可供選擇的傳輸層
Subversion在版本庫訪問的完成上具有很高的抽象程度,有利于我們完成一個新的網(wǎng)站訪問體制。Subversion能夠作為一個擴(kuò)展模塊嵌入到Apache當(dāng)中,這種方法在可靠性和互動性方面有著很大的優(yōu)勢,可以直接用云服務(wù)器關(guān)鍵技術(shù)——驗(yàn)證、受權(quán)和傳送縮小等。除此之外,Subversion本身也實(shí)現(xiàn)了一個輕形的、可單獨(dú)運(yùn)轉(zhuǎn)的服務(wù)器程序,這一服務(wù)器使用了一個自定協(xié)議書,能夠輕松地選擇SSH封裝形式。
一致的數(shù)據(jù)信息操作
Subversion用一個二進(jìn)制差別算法描述文件的改變,針對文字(能讀)和二進(jìn)制(不能讀)文件其操作方法是一致的,兩類的文件縮小保存在版本庫中,而差別信息內(nèi)容則在互聯(lián)網(wǎng)上雙重傳送。
高效率的支系和標(biāo)識操作
在Subversion中,支系與標(biāo)識操作的花銷與工程大小不相干。Subversion分支和標(biāo)識操作只是一種類似硬鏈接的制度復(fù)制全部工程項(xiàng)目,因此這種操作一般只能耗費(fèi)非常少且相對性固定時間。
可修改性
Subversion并沒有歷史時間壓力,它是以一系列高質(zhì)量的分享C程序庫的方式進(jìn)行,具備界定較好的API,這也使得Subversion很容易維護(hù)保養(yǎng),和其他語言的表達(dá)互操作能力很強(qiáng)。