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

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

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

下面從幾個(gè)方面具體介紹Subversion。

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

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

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

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

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

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

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

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

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

Subversion提供:

版本化的目錄

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

真實(shí)的版本歷史

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

原子提交

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

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

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

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

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

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

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

有效率的分支和標(biāo)簽

分支與標(biāo)簽的代價(jià)不與工程的大小成比例,Subversion建立分支與標(biāo)簽時(shí)只是拷貝整個(gè)工程,使用了一種類(lèi)似于硬鏈接的機(jī)制,因而這類(lèi)操作通常只會(huì)花費(fèi)很少并且相對(duì)固定的時(shí)間。

可修改性

Subversion沒(méi)有歷史負(fù)擔(dān),它由一系列良好的共享C庫(kù)實(shí)現(xiàn),具有定義良好的API,這使得Subversion非常容易維護(hù),可以輕易的用其他語(yǔ)言操作。

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

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