監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購(gòu)買(mǎi)價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

解讀版本控制工具

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

文章來(lái)源:泛普軟件 現(xiàn)在的軟件項(xiàng)目開(kāi)發(fā)中,必然涉及版本控制(Revision Control)工具。沒(méi)有使用版本控制工具的開(kāi)發(fā)工作,有人形容就如同生活在“黑暗時(shí)代”。版本控制工具是項(xiàng)目開(kāi)發(fā)中必不可少的,以此進(jìn)行的版本控制可以確保在軟件項(xiàng)目開(kāi)發(fā)中,不同的開(kāi)發(fā)人員所涉及的同一文檔都得到更新。

關(guān)于軟件版本控制 

如果在開(kāi)發(fā)團(tuán)隊(duì)中沒(méi)有使用版本控制,多個(gè)開(kāi)發(fā)人員共同負(fù)責(zé)同一個(gè)軟件文檔的開(kāi)發(fā),每個(gè)人在各自的機(jī)器上有整個(gè)軟件文檔的備份,并對(duì)之實(shí)施編程開(kāi)發(fā),在分別完成各自任務(wù)之后,再通過(guò)文本比對(duì)工具將各自機(jī)器上的不同版本的程序整合到一臺(tái)機(jī)器上。沒(méi)有進(jìn)行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開(kāi)發(fā)過(guò)程中將會(huì)引入很多問(wèn)題,如軟件代碼的一致性、軟件內(nèi)容的冗余、軟件過(guò)程的事物性、軟件開(kāi)發(fā)過(guò)程中的并發(fā)性、軟件源代碼的安全性,以及軟件的整合等問(wèn)題。 

版本控制的目的是實(shí)現(xiàn)開(kāi)發(fā)團(tuán)隊(duì)并行開(kāi)發(fā)、提高開(kāi)發(fā)效率的基礎(chǔ)。其目的在于對(duì)軟件開(kāi)發(fā)進(jìn)程中文件或目錄的發(fā)展過(guò)程提供有效的追蹤手段,保證在需要時(shí)可回到舊的版本,避免文件的丟失、修改的丟失和相互覆蓋,通過(guò)對(duì)版本庫(kù)的訪問(wèn)控制避免未經(jīng)授權(quán)的訪問(wèn)和修改,達(dá)到有效保護(hù)企業(yè)軟件資產(chǎn)和知識(shí)產(chǎn)權(quán)的目的。 

版本控制的功能在于跟蹤記錄整個(gè)軟件的開(kāi)發(fā)過(guò)程,包括軟件本身和相關(guān)文檔,以便對(duì)不同階段的軟件及相關(guān)文檔進(jìn)行表示并進(jìn)行差別分析,對(duì)軟件代碼進(jìn)行可撤消的修改,便于匯總不同開(kāi)發(fā)人員所做的修改,輔助協(xié)調(diào)和管理軟件開(kāi)發(fā)團(tuán)隊(duì)。
 


Linux下的版本控制


版本控制在空間上可以保證完成集中統(tǒng)一管理,解決一致性和冗余問(wèn)題。在開(kāi)發(fā)工作中,開(kāi)發(fā)人員在提交軟件代碼的時(shí)候一般采用服務(wù)器/客戶端方式,盡管開(kāi)發(fā)人員可以在自己的本地留有備份,但最終唯一有效的只有服務(wù)器端的程序代碼;在時(shí)間上全程跟蹤記錄工具將會(huì)自動(dòng)記錄開(kāi)發(fā)過(guò)程中的每個(gè)更改細(xì)節(jié),和不同時(shí)期的不同版本。這在一定程度上可以解決冗余、事務(wù)性處理并發(fā)性問(wèn)題。項(xiàng)目管理人員可以通過(guò)版本控制對(duì)團(tuán)隊(duì)中的不同人員,實(shí)施操作權(quán)限的控制。對(duì)于不同角色的開(kāi)發(fā)人員,對(duì)軟件的不同部分可以定義不同的訪問(wèn)權(quán)限。這在一定程度可以解決軟件安全性問(wèn)題。版本控制工具的使用,可以減輕開(kāi)發(fā)人員的負(fù)擔(dān),節(jié)省時(shí)間,同時(shí)降低人為錯(cuò)誤。

各“級(jí)別”的版本控制工具 

“工欲善其事,必先利其器”。既然版本控制在軟件項(xiàng)目開(kāi)發(fā)中如此重要,那就有必要來(lái)仔細(xì)了解一下軟件版本控制工具。 

版本控制工具也有“級(jí)別”之分,其中有“元老級(jí)”的CCC(Change and Configuration Control)、RCS(Revision Control System)、SCCS(Source Code Control System),“新秀級(jí)”的Hansky Firefly ,“入門(mén)級(jí)”的Visual SourceSafe,“中堅(jiān)級(jí)”的Clearcase,還有開(kāi)源軟件通用的版本控制工具CVS(Concurrent Versions System)和SVN(SubVersion)。CVS在一段時(shí)期內(nèi)幾乎成為版本控制工具的“代名詞”,大概有著30多年的歷史,而SVN是CVS的理想替代者,并出自同一人之手,被一些人譽(yù)為“迄今為止最好用的開(kāi)源源碼版本控制工具”。 

CCC:Change and Configuration Control。在20世紀(jì)60年代末70年代初,軟件配置管理的概念開(kāi)始提出。20世紀(jì)七十年代初期加利福利亞大學(xué)的Leon Presser撰寫(xiě)了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTool的公司,開(kāi)發(fā)了自己的配置管理工具CCC——這也是最早的配置管理工具之一。 

RCS:Revision Control System。誕生于1980年,由WALTER.f.Tichy 于美國(guó)的在Indina州的 Purdue 大學(xué)開(kāi)發(fā),是基于單一文件的版本維護(hù)系統(tǒng)。 

SCCS:Source Code Control System。SCCS是一種基本的程序源代碼版本控制工具,它適用于任何正文文件的版本維護(hù)。SCCS基于單一文件的版本控制,通常它的軟件儲(chǔ)藏室和要維護(hù)的文件在同一目錄下. SCCS 工作時(shí),有一個(gè)專門(mén)的SCCS 格式的文件保留其源文件的編碼版本,其記錄了足夠的信息來(lái)生成新的版本,并記錄了誰(shuí)對(duì)文件有修改權(quán),擁有該版本的”鎖”。

Hansky Firefly:作為H a n s k y 公司軟件開(kāi)發(fā)管理套件中重要一員的Firefly,可以輕松管理、維護(hù)整個(gè)企業(yè)的軟件資產(chǎn),包括程序代碼和相關(guān)文檔。Firefly是一個(gè)功能完善、運(yùn)行速度極快的軟件配置管理系統(tǒng),可以支持不同的操作系統(tǒng)和多種集成開(kāi)發(fā)環(huán)境,因此它能在整個(gè)企業(yè)中的不同團(tuán)隊(duì),不同項(xiàng)目中得以應(yīng)用。Firefly基于真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu),不依賴于任何特殊的網(wǎng)絡(luò)文件系統(tǒng),可以平滑地運(yùn)行在不同的LAN、WAN 環(huán)境中。它的安裝配置過(guò)程簡(jiǎn)單易用,F(xiàn)irefly 可以自動(dòng)、安全地保存代碼的每一次變化內(nèi)容,避免代碼被無(wú)意中覆蓋、修改。項(xiàng)目管理人員使用Firefly可以有效地組織開(kāi)發(fā)力量進(jìn)行并行開(kāi)發(fā)和管理項(xiàng)目中各階段點(diǎn)的各種資源,使得產(chǎn)品發(fā)布易于管理;并可以快速地回溯到任一歷史版本。系統(tǒng)管理員使用Firefly的內(nèi)置工具可以方便的進(jìn)行存儲(chǔ)庫(kù)的備份和恢復(fù),而不依賴于任何第三方工具。 

Visual SourceSafe:微軟的版本控制工具,僅支持Windows操作系統(tǒng)。雖然簡(jiǎn)單好用,但是僅適用于團(tuán)隊(duì)級(jí)開(kāi)發(fā),不能勝任企業(yè)級(jí)的開(kāi)發(fā)工作。 

Clearcase:IBM旗下Rational公司(2003年被IBM收購(gòu))的一款重量級(jí)的軟件配置管理(SCM, Software Configuration Managemen)工具。與CVS和VSS不同,Clearcase涵蓋的范圍包括版本控制、建立管理、工作空間管理和過(guò)程控制。從最初的軟件配置計(jì)劃,到配置項(xiàng)的確立,從變更控制到版本控制,Clearcase貫穿于整個(gè)軟件生命周期。 Clearcase支持現(xiàn)有的絕大多數(shù)操作系統(tǒng),但它的安裝、配置、使用相對(duì)較復(fù)雜,并且需要進(jìn)行團(tuán)隊(duì)培訓(xùn)。 

CVS:Concurrent Versions System。CVS 是有著三十年以上的時(shí)間的考驗(yàn)。CVS是開(kāi)放源代碼軟件世界的一個(gè)偉大杰作,有人認(rèn)為如今開(kāi)源成功發(fā)展的幕后功臣之一當(dāng)CVS莫屬。Linux 的創(chuàng)始人 Linus 就把 Linux 的成功,歸因于 CVS。由于CVS功能強(qiáng)大,跨平臺(tái),支持并發(fā)版本控制,而且免費(fèi),所以它在全球中小型軟件企業(yè)中得到了廣泛使用。CVS最大的遺憾就是缺少相應(yīng)的技術(shù)支持,許多問(wèn)題的解決需要自已尋找資料,甚至是研究源代碼。CVS是一個(gè)典型的服務(wù)器/客戶端軟件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。CVS支持遠(yuǎn)程管理,項(xiàng)目組分布開(kāi)發(fā)時(shí)一般都采用CVS。 

SVN:SubVersion。CVS縱然易用,但也有一些與生俱來(lái)的缺點(diǎn),比如CVS不支持文件改名,只對(duì)文件控制版本而沒(méi)有針對(duì)目錄的管理,等等。之后CVS 的創(chuàng)始人之一在其現(xiàn)任公司的資助下開(kāi)發(fā)了SubVersion,用以替代CVS。SubVersion 的設(shè)計(jì)目的就是針對(duì)CVS 的一些弱點(diǎn)進(jìn)行改進(jìn)。


SVN的版本控制流程



CVS縱然是一個(gè)老牌的工具產(chǎn)品,并也對(duì)開(kāi)源事業(yè)有貢獻(xiàn),但CVS的命令行操作著實(shí)讓一些使用者頭疼。在對(duì)一個(gè)特定版本的文檔Check in的時(shí)候,還要輸入一長(zhǎng)串的路徑名、文件名。在操作易用性上與CVS形成對(duì)比的是微軟家族的VSS。作為微軟的產(chǎn)品,在圖形界面化操作上自不用多言,但VSS只能適用于小團(tuán)隊(duì)的開(kāi)發(fā)工作。VSS是很好的入門(mén)級(jí)工具,但它的一些功能也太過(guò)于“入門(mén)”,在驗(yàn)證密碼、保存密碼這些基本功能上處理的不盡人意。適用于大型軟件開(kāi)發(fā)的有“中堅(jiān)級(jí)”的Clearcase,用它來(lái)管理一些小型的項(xiàng)目管理有些“大材小用”。

Clearcase支持目錄版本管理、異地團(tuán)隊(duì)開(kāi)發(fā)、視圖、多服務(wù)器等強(qiáng)大功能,所以一些大公司把它做為一、二級(jí)產(chǎn)品管理用,但同樣它的價(jià)格也不菲。CVS是開(kāi)源的,免費(fèi)的,更何況它還有一個(gè)理想的替代者——SVN。SVN的設(shè)計(jì)專門(mén)針對(duì)CVS的問(wèn)題作了改進(jìn),命令的設(shè)計(jì)更為合理,對(duì)二進(jìn)制文檔和目錄這樣的數(shù)據(jù)加強(qiáng)了控制能力,并且吸收了VSS的lock-modify-update(release)的模式和modify-merge模式的優(yōu)點(diǎn)這兩種方式在一定程度都支持并作了優(yōu)化,沒(méi)有提高使用的復(fù)雜度——這是難能可貴的。由于SVN的設(shè)計(jì)結(jié)構(gòu)很好,所以很容易為它開(kāi)發(fā)客戶端,好像很快就有了tortoiseSVN,Eclipse插件等很多客戶端,還有WEB模式的,可以遠(yuǎn)程管理,支持RSS更改訂閱。

孰優(yōu)孰劣?

現(xiàn)在又回到“開(kāi)源軟件 VS.商業(yè)軟件”的老話題上了。先來(lái)看下CVS的基本工作模式:

CVS在服務(wù)器端維護(hù)代碼文檔庫(kù),不同的開(kāi)發(fā)者在本地機(jī)器上建立對(duì)應(yīng)代碼樹(shù),并利用CVS保持本地代碼文檔同代碼文檔庫(kù)的一致。當(dāng)由于多個(gè)開(kāi)發(fā)者對(duì)文件的同時(shí)修改造成本地與庫(kù)中的代碼文件沖突時(shí),CVS報(bào)告并協(xié)助解決沖突代碼的合并問(wèn)題。普通開(kāi)發(fā)者(非管理員)對(duì)CVS的使用流程如下所示:

Check out命令只需在開(kāi)始建立本地代碼樹(shù)時(shí)使用一次,其后更新本地代碼則使用update命令。update命令比較服務(wù)器和本地代碼庫(kù)的區(qū)別,并把本地代碼樹(shù)中過(guò)時(shí)的文件自動(dòng)更新。當(dāng)完成對(duì)代碼的修改之后,在提交代碼之前同樣需要使用update命令,以獲取他人并行修改的的代碼。如果出現(xiàn)沖突(即對(duì)同一文件同時(shí)進(jìn)行了修改),CVS將在本地代碼中把兩者都保留并標(biāo)記出來(lái),要求開(kāi)發(fā)者處理沖突。在沖突不存在或已解決的情況下,使用commit命令將服務(wù)器代碼更新為本地代碼。CVS要求為更改提供注釋,并自動(dòng)為更新的文件處理版本編號(hào)。當(dāng)軟件需要正式發(fā)布時(shí),使用export命令導(dǎo)出不包含CVS設(shè)置信息的源代碼樹(shù)。 

即使不用拿CVS的升級(jí)版SVN,就算是拿沒(méi)有目錄版本控制功能的 CVS 來(lái)和商業(yè)的版本控制工具相比,我們也有充足的選擇開(kāi)源版本控制工具的理由:

服務(wù)器端是否和客戶端一樣看起來(lái)很美?
 
有一些商業(yè)軟件的服務(wù)器端簡(jiǎn)直就像是一個(gè)垃圾場(chǎng),用流水號(hào)命名的文件名,一個(gè)目錄下動(dòng)輒成千上萬(wàn)個(gè)文件。CVS以文件為核心,即面向文件的管理方式,項(xiàng)目文件可以方便地組合和移植

服務(wù)器端是否在使用數(shù)據(jù)庫(kù)來(lái)作版本控制的數(shù)據(jù)引擎?

為了支持目錄的版本控制工具,大多數(shù)商業(yè)軟件選擇了一個(gè)最為簡(jiǎn)單和直接的解決方案——數(shù)據(jù)庫(kù),用數(shù)據(jù)庫(kù)將文件名和版本庫(kù)對(duì)應(yīng)。但是引入數(shù)據(jù)庫(kù),服務(wù)器的穩(wěn)定性、可維護(hù)性大大下降,成為管理員的噩夢(mèng)。增量備份計(jì)劃難以實(shí)現(xiàn),不知道什么時(shí)候會(huì)出現(xiàn)數(shù)據(jù)庫(kù)崩潰。

是否支持到其他版本控制系統(tǒng)的遷移? 

對(duì)于商業(yè)軟件,這個(gè)答案是否定的。如果允許將版本庫(kù)導(dǎo)出到其他版本控制系統(tǒng),簡(jiǎn)直就是將自己好不容易積累的客戶拱手相讓。

可否定制?是否可以對(duì)提交說(shuō)明(Commit Log)進(jìn)行檢查?可否每一次的提交事件能夠收到郵件通知? 

CVS 的 CVSROOT 腳本擴(kuò)展,以及 SVN 的 Hooks 鉤子腳本,可以讓用戶充分發(fā)揮想像的空間。而商業(yè)版本控制工具,有此功能的寥寥。

客戶端是如何狀態(tài)保持的? 

熟悉 CVS 和 SVN 的用戶應(yīng)該知道工作目錄下的 CVS 和 .svn 隱含目錄的作用,就是用于記錄版本控制狀態(tài)信息的。而很多商業(yè)軟件并沒(méi)有這個(gè)機(jī)制,而是靠服務(wù)器端來(lái)維護(hù)此記錄:哪臺(tái)主機(jī)、檢出哪個(gè)版本的代碼、存儲(chǔ)到哪個(gè)目錄。這么做的一個(gè)弊病就是工作目錄不能自由在硬盤(pán)中移動(dòng),系統(tǒng)重裝導(dǎo)致的狀態(tài)丟失。

成本因素 

一是軟件采購(gòu)成本。商業(yè)軟件版本控制工具動(dòng)輒十幾萬(wàn)美金,而且是和用戶數(shù)目掛鉤的。 

二是學(xué)習(xí)成本。商業(yè)軟件版本控制工具的部署范圍非常有限,不能保證新員工一定熟悉該系統(tǒng),但是如果選擇開(kāi)源的版本控制工具,那么員工的培訓(xùn)費(fèi),可能就可以省下了。

客戶確認(rèn)軟件中沒(méi)有木馬、間諜軟件么? 

客戶肯定不會(huì)去購(gòu)買(mǎi)你競(jìng)爭(zhēng)對(duì)手開(kāi)發(fā)的版本控制工具,那么您為什么還會(huì)相信其他閉源的版本控制工具呢? 

小結(jié) 

再優(yōu)秀的版本控制工具都是軟件項(xiàng)目開(kāi)發(fā)中的一部份,況且,一個(gè)項(xiàng)目的完成并不只只涉及版本控制工具,還包括其他的一些工具。一個(gè)軟件項(xiàng)目的開(kāi)發(fā)成功需要涉及工具的使用,開(kāi)發(fā)人員資源的管理等因素。但是,選擇一款優(yōu)秀的、適合開(kāi)發(fā)團(tuán)隊(duì)和項(xiàng)目需求的版本控制工具能夠提高開(kāi)發(fā)工作效率和代碼的優(yōu)質(zhì)性。對(duì)于版本控制工具的選擇,秉持的一個(gè)原則是:“不選貴的,只選對(duì)的?!?it168)

 

發(fā)布:2007-04-22 09:21    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
西安OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普西安OA快博其他應(yīng)用

西安OA軟件 西安OA新聞動(dòng)態(tài) 西安OA信息化 西安OA快博 西安OA行業(yè)資訊 西安軟件開(kāi)發(fā)公司 西安門(mén)禁系統(tǒng) 西安物業(yè)管理軟件 西安倉(cāng)庫(kù)管理軟件 西安餐飲管理軟件 西安網(wǎng)站建設(shè)公司