多角度分析SVN與CVS優(yōu)缺點(diǎn)
本節(jié)向大家簡(jiǎn)單描述一下SVN與CVS優(yōu)缺點(diǎn)分析,在學(xué)習(xí)SVN的過程中你可能會(huì)遇到這樣的問題,在這里和大家分享一下,希望通過本節(jié)的學(xué)習(xí),大家對(duì)SVN與CVS優(yōu)缺點(diǎn)有個(gè)清楚地認(rèn)識(shí)。下面是具體介紹。
SVN與CVS優(yōu)缺點(diǎn)分析
所有的文檔都顯示SVN可以取代CVS,同時(shí)SVN的問題和缺點(diǎn)都被隱藏了。不幸的是,我們并不認(rèn)為SVN是CVS的替代品,盡管很多缺陷都被修改了。更有甚者,它甚至讓人重回VSS。CVS和SVN的比較類似與比較C++和Java。很明顯CVS和SVN都遠(yuǎn)比SourceSafe強(qiáng)大的多,如同C++和Java比Basic強(qiáng)大的多。CVS代表了幾乎代碼控制系統(tǒng)的所有功能項(xiàng),盡管有時(shí)他的實(shí)現(xiàn)并不很方便。SVN,修正并添加了一些CVS并不擁有功能。例如,創(chuàng)建標(biāo)志和分支dubious,你在編輯文件是其他人不會(huì)有任何通知。這有點(diǎn)象Java的發(fā)明者:他們認(rèn)為你不需要指針?biāo)麄兙驮贘ava里面取消了指針,Java里也沒有操作符重載。
SVN并不是CVS的替代品。他只是個(gè)不同的系統(tǒng),類似于CVS。它有些特有的功能,足以作為采用它的理由。這些功能使他更適合于開發(fā)環(huán)境,例如對(duì)PowerBuilder。下面你可以找到兩者的相對(duì)優(yōu)勢(shì)、劣勢(shì)。我們假設(shè)余下的東西兩者沒有什么大差別。如果你對(duì)兩者都舉棋不定,我們建議試試兩個(gè)系統(tǒng),注意觀察下面幾個(gè)指標(biāo)。你也可以到網(wǎng)上看看兩者之間的討論。
注意:這份評(píng)價(jià)表并不代表最終意見,兩個(gè)系統(tǒng)仍然在開發(fā)之中。
編號(hào)對(duì)比項(xiàng)
CVSVsSVN
===========================
1存儲(chǔ)類型格式
CVS是個(gè)基于RCS文件的版本控制系統(tǒng)。每個(gè)CVS文件都不過是普通的文件,加上一些額外信息。這些文件會(huì)簡(jiǎn)單的重復(fù)本地文件的樹結(jié)構(gòu)。因此,不必?fù)?dān)心有什么數(shù)據(jù)損失,如果必要的話你可以手工修改RCS文件。
------------------------------
SVN是基于關(guān)系數(shù)據(jù)庫(kù)的(BerkleyDB)或一系列二進(jìn)制文件的(FS_FS)。一方面這解決了許多問題(例如,并行讀寫共享文件)以及添加了許多新功能(例如運(yùn)行時(shí)的事務(wù)特性。)。然而另一方面,數(shù)據(jù)存儲(chǔ)由此變得不透明,或是說并不那么用戶友好了。那就是為什么工具軟件,對(duì)倉(cāng)庫(kù)(數(shù)據(jù)庫(kù))變得那么重要了。
===========================
2速度
SVN與CVS優(yōu)缺點(diǎn)中速度的比較,CVS比較慢。
------------------------------
整體而言,由于架構(gòu)實(shí)現(xiàn)的不同,SVN的確比CVS快很多。在網(wǎng)絡(luò)上它只傳輸很少的信息并支持更多的離線模式的功能。但這也是有代價(jià)的。速度的代價(jià)就是巨大的存儲(chǔ)(完全備份所有的工作文件)。
===========================
3標(biāo)志&分支(!!!重要)
在我們看來,這些實(shí)現(xiàn)是適宜的。
------------------------------
SVN開發(fā)員自認(rèn)為把采用標(biāo)志和分支而拋棄了其他三件東西是件了不起的事。實(shí)際上這意味著他們把這個(gè)概念替換為在檔案庫(kù)內(nèi)部復(fù)制文件或目錄以便保存日志。這樣一來,無論標(biāo)志創(chuàng)建還是分支創(chuàng)建都只是倉(cāng)庫(kù)內(nèi)部的文件復(fù)制了。在SVN的開發(fā)員看來,這是個(gè)很優(yōu)雅的決策,這讓生活變得如此簡(jiǎn)便。而我們看來,這絲毫沒有什么值得驕傲之處。對(duì)分支而言,事情還不怎么糟糕,現(xiàn)在分支不過是在倉(cāng)庫(kù)內(nèi)部的一個(gè)單獨(dú)的目錄而已了,不象早期還有些什么交錯(cuò)。對(duì)標(biāo)志而言,事情就不那么妙了。你已經(jīng)不能對(duì)代碼加標(biāo)志了,這個(gè)功能就這么沒了。在某種程度上說,SVN全文件編號(hào)補(bǔ)足了這個(gè)缺陷,SVN里整個(gè)倉(cāng)庫(kù)都有版本號(hào),但不是針對(duì)單個(gè)文件。當(dāng)然,如果你認(rèn)為一個(gè)符號(hào)標(biāo)志比一個(gè)四位編碼有效的話,我們業(yè)無話可說。
===========================
4元數(shù)據(jù)
SVN與CVS優(yōu)缺點(diǎn)分析中元數(shù)據(jù)比較。CVS只允許存儲(chǔ)文件。
------------------------------
SVN允許一個(gè)文件有任意都的可命名屬性。功能十分完全,但不知到有什么用。
===========================
5文件類型
CVS最初是為文本文件存儲(chǔ)而設(shè)計(jì)的。因此其他文件類型(二進(jìn)制,統(tǒng)一碼)文件的支持幾乎沒有,如需要的話則要有其他信息,并且客戶端服務(wù)器端都要調(diào)整。
------------------------------
SVN會(huì)關(guān)心所有的文件類型,不需要你來手工操作。
===========================
6滾回
SVN與CVS優(yōu)缺點(diǎn)比較中回滾比較。CVS允許任意的滾回,在任意一個(gè)已遞交的版本上,盡管著要花些時(shí)間(所有的文件都要分別處理)。
------------------------------
SVN不允許遞交后滾回。我們建議把倉(cāng)庫(kù)里好的狀態(tài)版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無論如何也是會(huì)存在數(shù)據(jù)庫(kù)里的。(svn的滾回操作實(shí)際上是merge操作)
===========================
7事務(wù)
SVN與CVS優(yōu)缺點(diǎn)分析中事務(wù)比較。CVS中的“零或一”事務(wù)原則根本沒有實(shí)現(xiàn)。如果檢入幾個(gè)文件的話(加到服務(wù)器上),很有可能部分文件完成了,而另幾個(gè)沒有。做為一個(gè)潛規(guī)則,手工糾正這些并且對(duì)余下的文件(而不是所有文件)一一重復(fù)檢入。這樣這些文件將在兩階段中被檢入。但至今為止,因?yàn)檫@個(gè)功能缺少而導(dǎo)致的數(shù)據(jù)倉(cāng)庫(kù)損壞的案例還沒有出現(xiàn)過。
------------------------------
SVN的確支持“零或一”事務(wù)原則,這是SVN的一大優(yōu)勢(shì)。
===========================
8可用性
CVS可以用在你需要的地方,支持完善。
------------------------------
SVN并未廣泛運(yùn)用,一些支持項(xiàng)目仍然沒有實(shí)現(xiàn)。本節(jié)關(guān)于SVN與CVS優(yōu)缺點(diǎn)分析介紹到這里。
【編輯推薦】