您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > SVN
將會取代CVS的版本控制工具??Subversion
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/12/4 17:12:41 ] 推薦標簽:

在開源軟件領(lǐng)域,并行版本系統(tǒng)(CVS)一直使版本控制的選擇。恰如其分的是,CVS本身是一個自由軟件,它的非限制性的技法和對網(wǎng)絡(luò)操作的支持(允許大量的不同地域分散的程序員可以共享他們工作的特性)非常符合開源軟件領(lǐng)域合作的精神,CVS和它半混亂狀態(tài)的開發(fā)模型成為了開源文化的基石。

但是像許多其他工具一樣,CVS開始顯露出衰老的跡象。Subversion是一個被設(shè)計成為CVS繼任者的新版本控制系統(tǒng)。設(shè)計者通過兩個辦法來爭取現(xiàn)有的CVS用戶:使用它構(gòu)件一個開源軟件系統(tǒng)的版本控制過程,從感覺和體驗上與CVS類似,同時Subversion努力彌補CVS許多明顯的缺陷。
Subversion可以在多種不同的操作系統(tǒng)上運行,它的主要用戶操作界面是基于命令行的,但現(xiàn)在已經(jīng)開發(fā)出很多可以運行在不同操作系統(tǒng)上的客戶端以及多種開發(fā)工具的集成套件。

下面從幾個方面具體介紹Subversion。

Subversion是什么?Subversion是一個自由/開源版本控制系統(tǒng),它管理文件和目錄可以超越時間。一組文件存放在中心版本庫,這個版本庫很像一個普通的文件服務(wù)器,只是它可以記錄每一次文件和目錄的修改,這便使你可以取得數(shù)據(jù)以前的版本,從而可以檢查所作的更改。從這個方面看,許多人把版本控制系統(tǒng)當作一種“時間機器”。

Subversion可以通過網(wǎng)絡(luò)訪問它的版本庫,從而使用戶可以在不同的電腦上使用。一定程度上可以說,允許用戶在各自的地方修改同一份數(shù)據(jù)是促進協(xié)作。進展可能非常的迅速,并沒有一個所有的改變都會取得效果的通道,由于所有的工作都有歷史版本,你不必擔心由于失去某個通道而影響質(zhì)量,如果存在不正確的改變,只要取消改變。

一些版本控制系統(tǒng)也是軟件配置管理(SCM)系統(tǒng),這種系統(tǒng)經(jīng)過特定的精巧設(shè)計來管理源代碼,有許多關(guān)于軟件開發(fā)的特性—本身理解編程語言、或者提供構(gòu)建程序的工具。然而,Subversion不是這樣一個系統(tǒng),它是一個通用系統(tǒng),可以管理任何類型的文件集,對你這可能是源代碼—對別人,可能是一個貨物清單或者是數(shù)字電影。

Subversion的歷史早在2000年,CollabNet, Inc. (http://www.collab.net) 開始尋找CVS替代產(chǎn)品的開發(fā)人員,CollabNet提供了一個協(xié)作軟件套件SourceCast,它的一個組件是版本控制系統(tǒng)。盡管 SourceCast在初始時使用CVS作為其版本控制系統(tǒng),但是CVS的局限性在一開始很明顯,CollabNet知道遲早要找到一個更好的替代品。遺憾的是,CVS成為了開源世界事實上的標準,因為沒有更好的產(chǎn)品,至少是沒有可以自由使用的。所以CollabNet決定寫一個新的版本控制系統(tǒng),建立在CVS思想之上的,但是修正其錯誤和不合理的特性。

2000年2月,他們聯(lián)系Open Source Development with CVS(Coriolis, 1999)的作者Karl Fogel,并且詢問他是否希望為這個新項目工作,巧合的是,當時Karl正在與朋友Jim Blandy討論設(shè)計一個新的版本控制系統(tǒng)。在1995年,他們兩個曾經(jīng)開辦一個提供CVS支持的公司Cyclic Software,盡管他們終賣掉了公司,但還是天天使用CVS進行日常工作,在使用CVS時的挫折終促使他們認真地去考慮如何管理標記版本的數(shù)據(jù),而且他們當時不僅僅提出了“Subversion”這個名字,并且做出了Subversion版本庫的基礎(chǔ)設(shè)計。所以當CollabNet提出邀請的時候,Karl馬上同意為這個項目工作,同時Jim也得到了他的雇主,RedHat軟件贊助他到這個項目并提供了一個寬松的時間。CollabNet雇傭了Karl和Ben Collins Sussman,詳細的設(shè)計從三月開始,在Behlendorf 、CollabNet、Jason Robbins 和 Greg Stein(當時是一個獨立開發(fā)者,活躍在WebDAV/DeltaV系統(tǒng)規(guī)范階段)的恰當激勵的幫助下,Subversion很快吸引了許多活躍的開發(fā)者,結(jié)果是許多有CVS經(jīng)驗的人們很樂于有機會為這個項目做些事情。

初的設(shè)計小組固定在簡單的目標上,他們不想在版本控制方法學中開墾處女地,他們只是希望修正CVS,他們決定Subversion匹配CVS的特性,保留相同的開發(fā)模型,但不復制CVS明顯的缺陷。盡管它不需要成為CVS的繼任者,它也應(yīng)該與CVS保持足夠的相似性,使得CVS用戶可以輕松的做出轉(zhuǎn)換。

經(jīng)過14個月的編碼,2001年8月31日,Subversion自己能夠“成為服務(wù)”了,開發(fā)者停止使用CVS保存Subversion的代碼,而使用Subversion本身。

當CollabNet開始這個項目的時候,曾經(jīng)資助了大量的工作(它為全職的Subversion開發(fā)者提供薪水),Subversion像許多開源項目一樣,被一些激勵知識界精英的寬松透明的規(guī)則支配著。CollabNet的版權(quán)許可證完全符合Debian的自由軟件方針,也是說,任何人可以自由的下載,修改和重新發(fā)布,不需要經(jīng)過CollabNet或其他人的允許。

Subversion的特性當討論Subversion為版本控制領(lǐng)域帶來的特性的時候,通過學習它在CVS基礎(chǔ)上所作的改進會是比較有效的方法。如果你不熟悉CVS,你會不太明白所有的特性,如果你根本不熟悉版本控制,你會瞪著眼無所適從,你好首先閱讀一下有關(guān)版本控制的其他介紹。

Subversion提供:

版本化的目錄

CVS只記錄單個文件的歷史,但是Subversion實現(xiàn)了一個可以跟蹤目錄樹更改的“虛擬”版本化文件系統(tǒng),文件和目錄都是有版本的。

真實的版本歷史

因為CVS只記錄單個文件的版本,對于拷貝和改名—這些文件經(jīng)常發(fā)生的操作,會改變一個目錄的內(nèi)容—在CVS中并不支持。在CVS里你也不可以用一個完全不同的文件覆蓋原來的同名文件而又不繼承原來文件的歷史。通過Subversion,你可以對文件或是目錄進行增加、拷貝和改名操作,也可以新增一個具有干凈歷史的文件。

原子提交

一系列的改動,要么全部提交到版本庫,要么一個也不提交,這樣可以讓用戶構(gòu)建一個所要提交修改的邏輯塊,防止部分修改提交到版本庫。

版本化的元數(shù)據(jù)

每一個文件或目錄都有一套屬性—鍵和它們的值,你可以建立并存儲任何鍵/值對,屬性也是隨時間的流逝而納入版本控制的,很像文件的內(nèi)容。

可選的網(wǎng)絡(luò)層

Subversion在版本庫訪問方面有一個抽象概念,利于人們?nèi)崿F(xiàn)新的網(wǎng)絡(luò)機制,Subversion可以作為一個擴展模塊與Apache結(jié)合,這給了Subversion在穩(wěn)定性和交互性方面很大的好處,可以直接使用服務(wù)器的特性—認證、授權(quán)和傳輸壓縮等等。也有一個輕型的,單獨運行的 Subversion服務(wù),這個服務(wù)使用自己的協(xié)議可以輕松的用SSH封裝。

一致的數(shù)據(jù)操作

Subversion表示文件是建立在二進制文件區(qū)別算法基礎(chǔ)上的,對于文本(可讀)和二進制(不可讀)文件具備一致的操作方式,兩種類型的文件都壓縮存放在版本庫中,區(qū)別信息是在網(wǎng)絡(luò)上雙向傳遞的。

有效率的分支和標簽

分支與標簽的代價不與工程的大小成比例,Subversion建立分支與標簽時只是拷貝整個工程,使用了一種類似于硬鏈接的機制,因而這類操作通常只會花費很少并且相對固定的時間。

可修改性

Subversion沒有歷史負擔,它由一系列良好的共享C庫實現(xiàn),具有定義良好的API,這使得Subversion非常容易維護,可以輕易的用其他語言操作。

Subversion的架構(gòu)俯視Subersion的設(shè)計,可以看出,一端是保存你所有納入版本控制的數(shù)據(jù)的Subversion版本庫,在另一端是你的Subvesion客戶端程序,管理著所有納入版本控制數(shù)據(jù)的本地影射(叫做“工作拷貝”),在這兩極之間是各種各樣的版本庫訪問(RA)層,一些使用電腦網(wǎng)絡(luò)通過網(wǎng)絡(luò)服務(wù)器訪問版本庫,一些則繞過網(wǎng)絡(luò)服務(wù)器直接訪問版本庫。

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