Apache Subversion 通常被縮寫成 SVN,是一個(gè)開(kāi)放源代碼的版本控制系統(tǒng),Subversion 在 2000 年由 CollabNet Inc 開(kāi)發(fā),現(xiàn)在發(fā)展成為 Apache 軟件基金會(huì)的一個(gè)項(xiàng)目,同樣是一個(gè)豐富的開(kāi)發(fā)者和用戶社區(qū)的一部分。這個(gè)教程給你提供一個(gè)理解 SVN 系統(tǒng),操作當(dāng)前和歷史版本的文件,比如代碼、網(wǎng)頁(yè)、文檔。
SVN是Subversion的簡(jiǎn)稱,是一個(gè)開(kāi)放源代碼的版本控制系統(tǒng),相較于RCS、CVS,它采用了分支管理系統(tǒng),它的設(shè)計(jì)目標(biāo)就是取代CVS?;ヂ?lián)網(wǎng)上很多版本控制服務(wù)已從CVS遷移到Subversion。說(shuō)得簡(jiǎn)單一點(diǎn)SVN就是用于多個(gè)人共同開(kāi)發(fā)同一個(gè)項(xiàng)目,共用資源的目的。
1 存儲(chǔ)類型格式
CVS是個(gè)基于RCS文件的版本控制系統(tǒng)。每個(gè)CVS文件都不過(guò)是普通的文件,加上一些額外信息。這些文件會(huì)簡(jiǎn)單的重復(fù)本地文件的樹結(jié)構(gòu)。因此,不必?fù)?dān)心有什么數(shù)據(jù)損失,如果必要的話可以手工修改RCS文件。
SVN是基于關(guān)系數(shù)據(jù)庫(kù)的(BerkleyDB)或一系列二進(jìn)制文件的(FS_FS)。一方面這解決了許多問(wèn)題 (例如,并行讀寫共享文件)以及添加了許多新功能(例如運(yùn)行時(shí)的事務(wù)特性。)。然而另一方面,數(shù)據(jù)存儲(chǔ)由此變得不透明。
2 速度
CVS比較慢。
整體而言,由于架構(gòu)實(shí)現(xiàn)的不同, SVN的確比CVS快很多。在網(wǎng)絡(luò)上它只傳輸很少的信息并支持更多的離線模式的功能。但這也是有代價(jià)的。速度的代價(jià)就是巨大的存儲(chǔ)(完全備份所有的工作文件)。
3 、標(biāo)志&分支
SVN采用標(biāo)志和分支而拋棄了其他三件東西,實(shí)際上這意味著他們把這個(gè)概念替換為在檔案庫(kù)內(nèi)部復(fù)制文件或目錄以便保存日志。這樣一來(lái),無(wú)論標(biāo)志創(chuàng)建還是分支創(chuàng)建都只是倉(cāng)庫(kù)內(nèi)部的文件復(fù)制了。對(duì)分支而言:分支不過(guò)是在倉(cāng)庫(kù)內(nèi)部的一個(gè)單獨(dú)的目錄而已了,不像早期還有些什么交錯(cuò)。對(duì)標(biāo)志而言:已經(jīng)不能對(duì)代碼加標(biāo)志了。在某種程度上說(shuō),SVN全文件編號(hào)補(bǔ)足了這個(gè)缺陷,SVN里整個(gè)倉(cāng)庫(kù)都有版本號(hào),但不是針對(duì)單個(gè)文件。
4、元數(shù)據(jù)
CVS只允許存儲(chǔ)文件。
SVN允許一個(gè)文件有任意多的可命名屬性,功能十分完全。
5、文件類型
CVS最初是為文本文件存儲(chǔ)而設(shè)計(jì)的。因此其他文件類型(二進(jìn)制,統(tǒng)一碼)文件的支持幾乎沒(méi)有,如需要的話則要有其他信息,并且客戶端服務(wù)器端都要調(diào)整。
SVN會(huì)關(guān)心所有的文件類型,不需要你來(lái)手工操作。
6、回滾
CVS允許任意的回滾,在任意一個(gè)已遞交的版本上,盡管這要花些時(shí)間(所有的文件都要分別處理)。
SVN不允許遞交后回滾。建議把版本庫(kù)里好的狀態(tài)版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無(wú)論如何也是會(huì)存在數(shù)據(jù)庫(kù)里的。(SVN的滾回操作實(shí)際上是merge操作)
7、事務(wù)
CVS中的“零或一”事務(wù)原則根本沒(méi)有實(shí)現(xiàn)。如果檢入幾個(gè)文件的話(加到服務(wù)器上),很有可能部分文件完成了,而另幾個(gè)沒(méi)有。作為一個(gè)潛規(guī)則,手工糾正這些并且對(duì)余下的文件 (而不是所有文件)一一重復(fù)檢入。這樣這些文件將在兩階段中被檢入。SVN的確支持“零或一”事務(wù)原則,這是SVN的一大優(yōu)勢(shì)。
本教程是讓對(duì)有版本控制需求且對(duì) SVN 感興趣的軟件開(kāi)發(fā)人員學(xué)習(xí) SVN 的基本知識(shí),通過(guò)本教程你可以一步一步了解 SVN 的使用。
SVN 官網(wǎng):https://subversion.apache.org/
Github SVN 源碼:https://github.com/apache/subversion
java教程:http://www.hgci.cn/java/