您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源配置管理工具 > cvs
從CVS到SVN
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/1/7 17:20:27 ] 推薦標(biāo)簽:CVS SVN

二、SVN與CVS優(yōu)缺點(diǎn)
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ǔ)由此變得不透明。
2,速度 
  整體而言,由于架構(gòu)實(shí)現(xiàn)的不同, SVN的確比CVS快很多,在網(wǎng)絡(luò)上它只傳輸很少的信息并支持更多的離線模式的功能。速度的代價(jià)是巨大的存儲(chǔ)(完全備份所有的工作文件)。
3,標(biāo)志&分支 
  SVN采用標(biāo)志和分支,在檔案庫(kù)內(nèi)部復(fù)制文件或目錄以便保存日志。SVN里整個(gè)倉(cāng)庫(kù)都有版本號(hào),但不是針對(duì)單個(gè)文件。
4, 元數(shù)據(jù) 
  CVS只允許存儲(chǔ)文件。SVN允許一個(gè)文件有任意多的可命名屬性,功能十分完全。
5,文件類型 
  CVS是為文本文件存儲(chǔ)而設(shè)計(jì)的。SVN支持所有的文件類型。
6,回滾 
  CVS允許任意的回滾,在任意一個(gè)已遞交的版本上,盡管這要花些時(shí)間(所有的文件都要分別處理)!
  SVN不允許遞交后回滾。建議把版本庫(kù)里好的狀態(tài)版本加到末尾,覆蓋掉損壞的版本。而損壞的版本無論如何也是會(huì)存在數(shù)據(jù)庫(kù)里的。(SVN的滾回操作實(shí)際上是merge操作)
7,事務(wù) 
  CVS中的“零或一”事務(wù)原則根本沒有實(shí)現(xiàn)。如果檢入幾個(gè)文件的話(加到服務(wù)器上),很有可能部分文件完成了,而另幾個(gè)沒有。作為一個(gè)潛規(guī)則,手工糾正這些并且對(duì)余下的文件 (而不是所有文件)一一重復(fù)檢入。這樣這些文件將在兩階段中被檢入。SVN支持“零或一”事務(wù)原則,這是SVN的一大優(yōu)勢(shì)。
  
一、SVN(Subversion)概述
1,定義
SVN版本控制系統(tǒng)、代碼、文檔等管理工具,是cvs的接班人。Subversion 初的設(shè)計(jì)Team定下了幾個(gè)簡(jiǎn)單的目標(biāo):它必須在功能上可取代 CVS,也是說, 所有 CVS 可做到的事, 它都要能夠作到。 在修正明顯的瑕疵的同時(shí), 還要保留相同的開發(fā)模式。經(jīng)過十四個(gè)月的編碼后, Subversion 于2001年8月31日開始實(shí)現(xiàn) “自行管理”,即開發(fā)人員不再使用 CVS 來管理 Subversion 的代碼, 而以 Subversion 自己來管理。目前,絕大多數(shù)開源軟件都使用SVN作為代碼版本管理軟件。SVN = 版本控制 + 備份服務(wù)器。簡(jiǎn)單的說,您可以把SVN當(dāng)成您的備份服務(wù)器,更好的是,他可以幫您記住每次上傳到這個(gè)服務(wù)器的檔案內(nèi)容,并且自動(dòng)的賦予每次的變更一個(gè)版本。 通常我們稱用來存放上傳檔案的地方做Repository。用中文來說,有點(diǎn)像是檔案?jìng)}庫(kù)的意思,不過,通常我們還是使用Repository這個(gè)名詞;旧希谝淮挝覀冃枰幸粋(gè)新增(add)檔案的動(dòng)作,將想要備份的檔案放到Repository上面。日后,當(dāng)您有任何修改時(shí),都可以上傳到 Repository上面,上傳已經(jīng)存在且修改過的檔案叫做commit,也是提交修改給SVN server的意思。針對(duì)每次的commit,SVN server都會(huì)賦予他一個(gè)新的版本。同時(shí),也會(huì)把每次上傳的時(shí)間記錄下來。日后,如果您需要從Repository下載曾經(jīng)提交的檔案。您可以直接選擇取得新的版本,也可以取得任何一個(gè)之前的版本。如果忘記了版本,還是可以靠記憶嘗試取得某個(gè)日期的版本。

2,版本模型
所有的版本控制系統(tǒng)都需要解決文件共享的問題 ,怎樣讓系統(tǒng)允許用戶共享信息,而不會(huì)讓他們因意外而互相干擾?傳統(tǒng)的版本控制系統(tǒng)使用鎖定-修改-解鎖模型,在這種模型里,在一個(gè)時(shí)間段里版本庫(kù)的一個(gè)文件只允許被一個(gè)人修改。首先在修改之前,要“鎖定”住這個(gè)文件,其他人不能對(duì)這個(gè)文件做任何修改,在結(jié)束編輯并且放開這個(gè)鎖之前,其他人只可以閱讀文件。編輯完解鎖后,其他人才可以鎖定并且開始編輯這個(gè)文件。SVN,CVS和一些版本控制系統(tǒng)使用拷貝-修改-合并模型,在這種模型里,每一個(gè)客戶聯(lián)系項(xiàng)目版本庫(kù)建立一個(gè)個(gè)人工作拷貝—版本庫(kù)中文件和目錄的本地映射。用戶并行工作,修改各自的工作拷貝,終,各個(gè)私有的拷貝合并在一起,成為終的版本,這種系統(tǒng)通?梢暂o助合并操作,但是終要靠人工去確定正誤。需要注意的是軟件不能自動(dòng)的解決沖突,只有人可以理解并作出智能的選擇。如果修改沖突,可以看到一對(duì)沖突的修改集,并手工的選擇保留一組修改。

3,為什么要使用SVN
• SVN Repository可以是PC上一個(gè)目錄或隨身碟,也可以是公司的服務(wù)器。
• SVN有很棒的版本控管機(jī)制。所有上傳的版本都會(huì)幫您記錄下來,日后您可以隨時(shí)取得某一個(gè)時(shí)刻的版本,而且也有版本分支及合并等好用的功能。
• SVN可以讓不同的開發(fā)者存取同樣的檔案,并且利用SVN Server作為檔案同步的機(jī)制。也是說,您有檔案更新時(shí),無須將檔案寄給您的開發(fā)成員。只需要告訴他新的版本已經(jīng)在SVN Server上面,請(qǐng)他自己去SVN Server上面可以取得新版本。而且,SVN Server也可以做到當(dāng)您上傳新版本后,自動(dòng)發(fā)信給相關(guān)的成員。
• SVN的存放檔案方式是采用差異備份的方式。也是說,他只會(huì)備份有不同的地方。所以很省硬盤空間。此外,他也可以針對(duì)所謂的非文字文件進(jìn)行差異備份。
4,集中式版本管理系統(tǒng)
SVN是一個(gè)“集中式”的信息共享系統(tǒng)。版本庫(kù)是SVN的核心部分,是數(shù)據(jù)的中央倉(cāng)庫(kù)。版本庫(kù)以典型的文件和目錄結(jié)構(gòu)形式文件系統(tǒng)樹來保存信息。任意數(shù)量的客戶端連接到SVN版本庫(kù),讀取、修改這些文件?蛻舳送ㄟ^寫數(shù)據(jù)將信息分享給其他人,通過讀取數(shù)據(jù)獲取別人共享的信息。
集中式管理的工作流程如下圖:
  

上一頁(yè)12345下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd