當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 陜西OA系統(tǒng) > 西安OA系統(tǒng) > 西安OA快博
解讀版本控制工具
關(guān)于軟件版本控制
如果在開發(fā)團(tuán)隊中沒有使用版本控制,多個開發(fā)人員共同負(fù)責(zé)同一個軟件文檔的開發(fā),每個人在各自的機(jī)器上有整個軟件文檔的備份,并對之實施編程開發(fā),在分別完成各自任務(wù)之后,再通過文本比對工具將各自機(jī)器上的不同版本的程序整合到一臺機(jī)器上。沒有進(jìn)行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開發(fā)過程中將會引入很多問題,如軟件代碼的一致性、軟件內(nèi)容的冗余、軟件過程的事物性、軟件開發(fā)過程中的并發(fā)性、軟件源代碼的安全性,以及軟件的整合等問題。
版本控制的目的是實現(xiàn)開發(fā)團(tuán)隊并行開發(fā)、提高開發(fā)效率的基礎(chǔ)。其目的在于對軟件開發(fā)進(jìn)程中文件或目錄的發(fā)展過程提供有效的追蹤手段,保證在需要時可回到舊的版本,避免文件的丟失、修改的丟失和相互覆蓋,通過對版本庫的訪問控制避免未經(jīng)授權(quán)的訪問和修改,達(dá)到有效保護(hù)企業(yè)軟件資產(chǎn)和知識產(chǎn)權(quán)的目的。
版本控制的功能在于跟蹤記錄整個軟件的開發(fā)過程,包括軟件本身和相關(guān)文檔,以便對不同階段的軟件及相關(guān)文檔進(jìn)行表示并進(jìn)行差別分析,對軟件代碼進(jìn)行可撤消的修改,便于匯總不同開發(fā)人員所做的修改,輔助協(xié)調(diào)和管理軟件開發(fā)團(tuán)隊。
Linux下的版本控制
版本控制在空間上可以保證完成集中統(tǒng)一管理,解決一致性和冗余問題。在開發(fā)工作中,開發(fā)人員在提交軟件代碼的時候一般采用服務(wù)器/客戶端方式,盡管開發(fā)人員可以在自己的本地留有備份,但最終唯一有效的只有服務(wù)器端的程序代碼;在時間上全程跟蹤記錄工具將會自動記錄開發(fā)過程中的每個更改細(xì)節(jié),和不同時期的不同版本。這在一定程度上可以解決冗余、事務(wù)性處理并發(fā)性問題。項目管理人員可以通過版本控制對團(tuán)隊中的不同人員,實施操作權(quán)限的控制。對于不同角色的開發(fā)人員,對軟件的不同部分可以定義不同的訪問權(quán)限。這在一定程度可以解決軟件安全性問題。版本控制工具的使用,可以減輕開發(fā)人員的負(fù)擔(dān),節(jié)省時間,同時降低人為錯誤。
各“級別”的版本控制工具
“工欲善其事,必先利其器”。既然版本控制在軟件項目開發(fā)中如此重要,那就有必要來仔細(xì)了解一下軟件版本控制工具。
版本控制工具也有“級別”之分,其中有“元老級”的CCC(Change and Configuration Control)、RCS(Revision Control System)、SCCS(Source Code Control System),“新秀級”的Hansky Firefly ,“入門級”的Visual SourceSafe,“中堅級”的Clearcase,還有開源軟件通用的版本控制工具CVS(Concurrent Versions System)和SVN(SubVersion)。CVS在一段時期內(nèi)幾乎成為版本控制工具的“代名詞”,大概有著30多年的歷史,而SVN是CVS的理想替代者,并出自同一人之手,被一些人譽為“迄今為止最好用的開源源碼版本控制工具”。
CCC:Change and Configuration Control。在20世紀(jì)60年代末70年代初,軟件配置管理的概念開始提出。20世紀(jì)七十年代初期加利福利亞大學(xué)的Leon Presser撰寫了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTool的公司,開發(fā)了自己的配置管理工具CCC——這也是最早的配置管理工具之一。
RCS:Revision Control System。誕生于1980年,由WALTER.f.Tichy 于美國的在Indina州的 Purdue 大學(xué)開發(fā),是基于單一文件的版本維護(hù)系統(tǒng)。
SCCS:Source Code Control System。SCCS是一種基本的程序源代碼版本控制工具,它適用于任何正文文件的版本維護(hù)。SCCS基于單一文件的版本控制,通常它的軟件儲藏室和要維護(hù)的文件在同一目錄下. SCCS 工作時,有一個專門的SCCS 格式的文件保留其源文件的編碼版本,其記錄了足夠的信息來生成新的版本,并記錄了誰對文件有修改權(quán),擁有該版本的”鎖”。
Hansky Firefly:作為H a n s k y 公司軟件開發(fā)管理套件中重要一員的Firefly,可以輕松管理、維護(hù)整個企業(yè)的軟件資產(chǎn),包括程序代碼和相關(guān)文檔。Firefly是一個功能完善、運行速度極快的軟件配置管理系統(tǒng),可以支持不同的操作系統(tǒng)和多種集成開發(fā)環(huán)境,因此它能在整個企業(yè)中的不同團(tuán)隊,不同項目中得以應(yīng)用。Firefly基于真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu),不依賴于任何特殊的網(wǎng)絡(luò)文件系統(tǒng),可以平滑地運行在不同的LAN、WAN 環(huán)境中。它的安裝配置過程簡單易用,F(xiàn)irefly 可以自動、安全地保存代碼的每一次變化內(nèi)容,避免代碼被無意中覆蓋、修改。項目管理人員使用Firefly可以有效地組織開發(fā)力量進(jìn)行并行開發(fā)和管理項目中各階段點的各種資源,使得產(chǎn)品發(fā)布易于管理;并可以快速地回溯到任一歷史版本。系統(tǒng)管理員使用Firefly的內(nèi)置工具可以方便的進(jìn)行存儲庫的備份和恢復(fù),而不依賴于任何第三方工具。
Visual SourceSafe:微軟的版本控制工具,僅支持Windows操作系統(tǒng)。雖然簡單好用,但是僅適用于團(tuán)隊級開發(fā),不能勝任企業(yè)級的開發(fā)工作。
Clearcase:IBM旗下Rational公司(2003年被IBM收購)的一款重量級的軟件配置管理(SCM, Software Configuration Managemen)工具。與CVS和VSS不同,Clearcase涵蓋的范圍包括版本控制、建立管理、工作空間管理和過程控制。從最初的軟件配置計劃,到配置項的確立,從變更控制到版本控制,Clearcase貫穿于整個軟件生命周期。 Clearcase支持現(xiàn)有的絕大多數(shù)操作系統(tǒng),但它的安裝、配置、使用相對較復(fù)雜,并且需要進(jìn)行團(tuán)隊培訓(xùn)。
CVS:Concurrent Versions System。CVS 是有著三十年以上的時間的考驗。CVS是開放源代碼軟件世界的一個偉大杰作,有人認(rèn)為如今開源成功發(fā)展的幕后功臣之一當(dāng)CVS莫屬。Linux 的創(chuàng)始人 Linus 就把 Linux 的成功,歸因于 CVS。由于CVS功能強(qiáng)大,跨平臺,支持并發(fā)版本控制,而且免費,所以它在全球中小型軟件企業(yè)中得到了廣泛使用。CVS最大的遺憾就是缺少相應(yīng)的技術(shù)支持,許多問題的解決需要自已尋找資料,甚至是研究源代碼。CVS是一個典型的服務(wù)器/客戶端軟件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。CVS支持遠(yuǎn)程管理,項目組分布開發(fā)時一般都采用CVS。
SVN:SubVersion。CVS縱然易用,但也有一些與生俱來的缺點,比如CVS不支持文件改名,只對文件控制版本而沒有針對目錄的管理,等等。之后CVS 的創(chuàng)始人之一在其現(xiàn)任公司的資助下開發(fā)了SubVersion,用以替代CVS。SubVersion 的設(shè)計目的就是針對CVS 的一些弱點進(jìn)行改進(jìn)。
SVN的版本控制流程
CVS縱然是一個老牌的工具產(chǎn)品,并也對開源事業(yè)有貢獻(xiàn),但CVS的命令行操作著實讓一些使用者頭疼。在對一個特定版本的文檔Check in的時候,還要輸入一長串的路徑名、文件名。在操作易用性上與CVS形成對比的是微軟家族的VSS。作為微軟的產(chǎn)品,在圖形界面化操作上自不用多言,但VSS只能適用于小團(tuán)隊的開發(fā)工作。VSS是很好的入門級工具,但它的一些功能也太過于“入門”,在驗證密碼、保存密碼這些基本功能上處理的不盡人意。適用于大型軟件開發(fā)的有“中堅級”的Clearcase,用它來管理一些小型的項目管理有些“大材小用”。
Clearcase支持目錄版本管理、異地團(tuán)隊開發(fā)、視圖、多服務(wù)器等強(qiáng)大功能,所以一些大公司把它做為一、二級產(chǎn)品管理用,但同樣它的價格也不菲。CVS是開源的,免費的,更何況它還有一個理想的替代者——SVN。SVN的設(shè)計專門針對CVS的問題作了改進(jìn),命令的設(shè)計更為合理,對二進(jìn)制文檔和目錄這樣的數(shù)據(jù)加強(qiáng)了控制能力,并且吸收了VSS的lock-modify-update(release)的模式和modify-merge模式的優(yōu)點這兩種方式在一定程度都支持并作了優(yōu)化,沒有提高使用的復(fù)雜度——這是難能可貴的。由于SVN的設(shè)計結(jié)構(gòu)很好,所以很容易為它開發(fā)客戶端,好像很快就有了tortoiseSVN,Eclipse插件等很多客戶端,還有WEB模式的,可以遠(yuǎn)程管理,支持RSS更改訂閱。
孰優(yōu)孰劣?
現(xiàn)在又回到“開源軟件 VS.商業(yè)軟件”的老話題上了。先來看下CVS的基本工作模式:
CVS在服務(wù)器端維護(hù)代碼文檔庫,不同的開發(fā)者在本地機(jī)器上建立對應(yīng)代碼樹,并利用CVS保持本地代碼文檔同代碼文檔庫的一致。當(dāng)由于多個開發(fā)者對文件的同時修改造成本地與庫中的代碼文件沖突時,CVS報告并協(xié)助解決沖突代碼的合并問題。普通開發(fā)者(非管理員)對CVS的使用流程如下所示:
Check out命令只需在開始建立本地代碼樹時使用一次,其后更新本地代碼則使用update命令。update命令比較服務(wù)器和本地代碼庫的區(qū)別,并把本地代碼樹中過時的文件自動更新。當(dāng)完成對代碼的修改之后,在提交代碼之前同樣需要使用update命令,以獲取他人并行修改的的代碼。如果出現(xiàn)沖突(即對同一文件同時進(jìn)行了修改),CVS將在本地代碼中把兩者都保留并標(biāo)記出來,要求開發(fā)者處理沖突。在沖突不存在或已解決的情況下,使用commit命令將服務(wù)器代碼更新為本地代碼。CVS要求為更改提供注釋,并自動為更新的文件處理版本編號。當(dāng)軟件需要正式發(fā)布時,使用export命令導(dǎo)出不包含CVS設(shè)置信息的源代碼樹。
即使不用拿CVS的升級版SVN,就算是拿沒有目錄版本控制功能的 CVS 來和商業(yè)的版本控制工具相比,我們也有充足的選擇開源版本控制工具的理由:
服務(wù)器端是否和客戶端一樣看起來很美?
有一些商業(yè)軟件的服務(wù)器端簡直就像是一個垃圾場,用流水號命名的文件名,一個目錄下動輒成千上萬個文件。CVS以文件為核心,即面向文件的管理方式,項目文件可以方便地組合和移植
服務(wù)器端是否在使用數(shù)據(jù)庫來作版本控制的數(shù)據(jù)引擎?
為了支持目錄的版本控制工具,大多數(shù)商業(yè)軟件選擇了一個最為簡單和直接的解決方案——數(shù)據(jù)庫,用數(shù)據(jù)庫將文件名和版本庫對應(yīng)。但是引入數(shù)據(jù)庫,服務(wù)器的穩(wěn)定性、可維護(hù)性大大下降,成為管理員的噩夢。增量備份計劃難以實現(xiàn),不知道什么時候會出現(xiàn)數(shù)據(jù)庫崩潰。
是否支持到其他版本控制系統(tǒng)的遷移?
對于商業(yè)軟件,這個答案是否定的。如果允許將版本庫導(dǎo)出到其他版本控制系統(tǒng),簡直就是將自己好不容易積累的客戶拱手相讓。
可否定制?是否可以對提交說明(Commit Log)進(jìn)行檢查?可否每一次的提交事件能夠收到郵件通知?
CVS 的 CVSROOT 腳本擴(kuò)展,以及 SVN 的 Hooks 鉤子腳本,可以讓用戶充分發(fā)揮想像的空間。而商業(yè)版本控制工具,有此功能的寥寥。
客戶端是如何狀態(tài)保持的?
熟悉 CVS 和 SVN 的用戶應(yīng)該知道工作目錄下的 CVS 和 .svn 隱含目錄的作用,就是用于記錄版本控制狀態(tài)信息的。而很多商業(yè)軟件并沒有這個機(jī)制,而是靠服務(wù)器端來維護(hù)此記錄:哪臺主機(jī)、檢出哪個版本的代碼、存儲到哪個目錄。這么做的一個弊病就是工作目錄不能自由在硬盤中移動,系統(tǒng)重裝導(dǎo)致的狀態(tài)丟失。
成本因素
一是軟件采購成本。商業(yè)軟件版本控制工具動輒十幾萬美金,而且是和用戶數(shù)目掛鉤的。
二是學(xué)習(xí)成本。商業(yè)軟件版本控制工具的部署范圍非常有限,不能保證新員工一定熟悉該系統(tǒng),但是如果選擇開源的版本控制工具,那么員工的培訓(xùn)費,可能就可以省下了。
客戶確認(rèn)軟件中沒有木馬、間諜軟件么?
客戶肯定不會去購買你競爭對手開發(fā)的版本控制工具,那么您為什么還會相信其他閉源的版本控制工具呢?
小結(jié)
再優(yōu)秀的版本控制工具都是軟件項目開發(fā)中的一部份,況且,一個項目的完成并不只只涉及版本控制工具,還包括其他的一些工具。一個軟件項目的開發(fā)成功需要涉及工具的使用,開發(fā)人員資源的管理等因素。但是,選擇一款優(yōu)秀的、適合開發(fā)團(tuán)隊和項目需求的版本控制工具能夠提高開發(fā)工作效率和代碼的優(yōu)質(zhì)性。對于版本控制工具的選擇,秉持的一個原則是:“不選貴的,只選對的?!?it168)
- 1數(shù)據(jù)災(zāi)難,就在我們身邊
- 2廣域網(wǎng)的安全模型
- 3五大技術(shù)改變未來
- 4辦公OA系統(tǒng)的組織結(jié)構(gòu)信息中間表需包含內(nèi)容:
- 5重慶打黑至少沒收數(shù)百億資產(chǎn) 去向成謎 -2
- 6OA系統(tǒng)辦公管理系統(tǒng)的項目協(xié)作管理功能好用嗎?
- 7OA辦公自動化軟件的資源管理有什么作用?
- 8警惕:虛擬服務(wù)器并不總是安全的
- 9辦公自動化軟件的客戶服務(wù)管理怎么樣呢?
- 10十問虛擬化
- 11如何與圖片垃圾郵件抗?fàn)?/a>
- 12公安部:將整改信號燈設(shè)置以及使用不規(guī)范
- 13災(zāi)難恢復(fù)的指導(dǎo)綱要--業(yè)務(wù)影響分析表
- 14日本再攔中國海監(jiān)飛機(jī) 外媒擔(dān)憂中日軍事沖突
- 15重聚什邡奔馳希望小學(xué) 戴姆勒譜寫溫暖之旅
- 16oa三種類型:1、產(chǎn)品細(xì)分;2、行業(yè)細(xì)分;3、區(qū)域細(xì)分
- 17人大:不必?fù)?dān)心網(wǎng)絡(luò)實名制影響舉報貪腐
- 18習(xí)近平提出:毛澤東的歷史周期律談話仍是警示
- 19西安OA系統(tǒng),哪家比較好!
- 202012太陽能等新能源補貼超200億元
- 21“左右逢源”的雙模虛擬主機(jī)
- 22CCM讓千萬用戶更滿意
- 23西安哪幾家公司OA軟件自主研發(fā)的?
- 24中國海洋局飛機(jī)接近釣魚島 日本緊急派F-15戰(zhàn)機(jī)攔截
- 25近距離無線通信應(yīng)用悄然起步
- 26OA軟件可以通過選擇日期查看其他周的車輛使用情況
- 27雙十一電商激戰(zhàn) 斯波帝卡完美備戰(zhàn)(圖)
- 28電子公文傳輸系統(tǒng)技術(shù)關(guān)鍵
- 29ILM標(biāo)準(zhǔn)化與實踐
- 302013年南京家裝市場剛需裝修仍占主導(dǎo)地位
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓