版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢 業(yè) 論 文</b></p><p> 論文題目: 論述如何做好版本控制 </p><p><b> 內(nèi) 容 摘 要</b></p><p> 近年來,隨著網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫技術(shù)的發(fā)展,使得軟件規(guī)模越來越龐大。多單位、多團(tuán)隊(duì)的協(xié)作開發(fā)使得開發(fā)隊(duì)伍的離散化程度增加,多種數(shù)據(jù)庫和多種開發(fā)平
2、臺的應(yīng)用以及軟件需求不確定性的增加,使得軟件開發(fā)過程越來越復(fù)雜,作為軟件過程中的版本控制管理面臨著更多的挑戰(zhàn),使得單純的版本控制系統(tǒng)在面對復(fù)雜的開發(fā)環(huán)境時(shí)顯得力不從心。又因?yàn)榘姹究刂剖且豁?xiàng)繁瑣的工作,和整個(gè)軟件的開發(fā)活動(dòng)緊密地聯(lián)系在一起,所以在實(shí)際工作中更需要有得力的工具輔助。從概念上講,軟件項(xiàng)目管理是為了使軟件項(xiàng)目能夠按照預(yù)定的成本、進(jìn)度、質(zhì)量順利完成,而對成本、人員、進(jìn)度、質(zhì)量、風(fēng)險(xiǎn)等進(jìn)行分析和管理的活動(dòng)。實(shí)際上,軟件項(xiàng)目管理的意義
3、不僅僅如此,進(jìn)行軟件項(xiàng)目管理有利于將開發(fā)人員的個(gè)人開發(fā)能力轉(zhuǎn)化成企業(yè)的開發(fā)能力,從而能夠提高軟件開發(fā)的質(zhì)量。那么,隨著軟件產(chǎn)業(yè)的崛起,軟件工程技術(shù)正吸引著越來越多關(guān)注的目光,作為軟件工程的一個(gè)重要領(lǐng)域,版本控制管理也日益受到人們的重視。版本控制工具各有所長,因而只有根據(jù)項(xiàng)目的預(yù)算和和開發(fā)組織的實(shí)際情況出發(fā),正所謂“好用就好”。在這里,本人就軟件市場上的主流版本控制工具做一些介紹和個(gè)人的看法。</p><p>
4、[關(guān)鍵詞] 軟件項(xiàng)目管理 版本控制管理 版本控制工具的比較</p><p><b> Abstract</b></p><p> In recent years, with the development of network technology and database technology, which makes software more and m
5、ore large scale. To coordinate the development of multiple units, multiple team gives rise to discrete degree of development team; increase the various development tools, database and a variety of development platform an
6、d the software demand uncertainty, making the software development process more complex, as the software development process in the version control management is fa</p><p> Key word:Software project managem
7、ent Version control management Comparison of version contorltools</p><p><b> 目 錄</b></p><p> 1版本控制的基本概念2</p><p> 1.1什么是版本控制2</p><p> 1.2為什么要版本控制
8、2</p><p> 2版本控制的發(fā)展史3</p><p> 2.1第一代配置管理3</p><p> 2.2第二代配置管理3</p><p> 2.3第三代配置管理4</p><p> 3不同“級別”的版本控制工具4</p><p> 3.1“元老級”的CCC
9、4</p><p> 3.2RCS[3]5</p><p> 3.3SCCS[4]5</p><p> 3.4“新秀級”的Hansky Firefly5</p><p> 3.5“入門級”的Visual SourceSafe5</p><p> 3.6“中堅(jiān)級”的Clearcase5&l
10、t;/p><p> 3.7開源軟件通用的CVS和SVN6</p><p> 3.7.1CVS:Concurrent Versions System6</p><p> 3.7.2SVN:SubVersion6</p><p> 4技術(shù)的潮流大勢-開源版本工具8</p><p> 4.1選擇開源版
11、本控制工具的理由8</p><p> 4.1.1服務(wù)器端是否和客戶端一樣看起來很美?9</p><p> 4.1.2服務(wù)器端是否在使用數(shù)據(jù)庫來作版本控制的數(shù)據(jù)引擎?9</p><p> 4.1.3是否支持到其他版本控制系統(tǒng)的遷移?10</p><p> 4.1.4可否定制?是否可以對提交說明(Commit Log)進(jìn)行
12、檢查?10</p><p> 4.1.5客戶端是如何狀態(tài)保持的?10</p><p> 4.1.6成本因素10</p><p> 4.1.7客戶確認(rèn)軟件中沒有木馬、間諜軟件么?10</p><p><b> 引言</b></p><p> 隨著軟件產(chǎn)業(yè)的崛起,軟件版本控制日
13、益受到人們的重視,版本控制對軟件產(chǎn)品的質(zhì)量非常重要。版本控制的目的是實(shí)現(xiàn)開發(fā)團(tuán)隊(duì)并行開發(fā)、提高開發(fā)效率的基礎(chǔ)。其目的在于對軟件開發(fā)進(jìn)程中文件或目錄的發(fā)展過程提供有效的追蹤手段,保證在需要時(shí)可回到舊的版本,避免文件的丟失、修改的丟失和相互覆蓋,通過對版本庫的訪問控制避免未經(jīng)授權(quán)的訪問和修改,達(dá)到有效保護(hù)企業(yè)軟件資產(chǎn)和知識產(chǎn)權(quán)的目的。版本控制的功能在于跟蹤記錄整個(gè)軟件的開發(fā)過程,包括軟件本身和相關(guān)文檔,以便對不同階段的軟件及相關(guān)文檔進(jìn)行表示
14、并進(jìn)行差別分析,對軟件代碼進(jìn)行可撤消的修改,便于匯總不同開發(fā)人員所做的修改,輔助協(xié)調(diào)和管理軟件開發(fā)團(tuán)隊(duì)。因此,我們需要從技術(shù)方面進(jìn)行突破和創(chuàng)新,以此來配合我們的工作需求。</p><p><b> 版本控制的基本概念</b></p><p> 1.1什么是版本控制</p><p> 版本控制[1]是程序開發(fā)、管理必不可少的工具,特別是在多
15、人協(xié)作的團(tuán)隊(duì)中,適宜的版本控制工具可以提高開發(fā)效率,消除很多由代碼版本帶來的問題。通過使用版本控制技術(shù)及工具,可以確保在軟件項(xiàng)目開發(fā)中不同的開發(fā)人員所涉及的同一文檔都得到正確的更新。版本控制包括兩個(gè)方面:一是保證測試人員得到的是最新的版本,二是記錄歷史版本的測試狀態(tài)。版本控制是對系統(tǒng)不同版次進(jìn)行標(biāo)識和跟蹤的過程,而版次則是指一系列版本變遷的其中一個(gè)。版本標(biāo)識的目的是便于對版本加以區(qū)分、檢索和跟蹤,以表明各個(gè)版本之間的關(guān)系。版本控制的功能
16、在于能跟蹤記錄整個(gè)測試過程,包括測試本身和相關(guān)文檔,以便對不同階段的待測軟件及相關(guān)文檔進(jìn)行標(biāo)識和差別分析,也便于協(xié)調(diào)和管理測試團(tuán)隊(duì)的工作。</p><p> 版本控制對于測試人員來說,它是不可或缺的工具。測試人員可以通過版本說明文檔了解到當(dāng)前的測試版本中和上一版本有哪些顯著的變化。明確了這些情況之后,測試人員可以更加高效,有針對性的執(zhí)行測試。</p><p> 1.2為什么要版本控制&
17、lt;/p><p> 在前面已經(jīng)介紹了版本控制的概念,那么這一章節(jié)我們重點(diǎn)了解為什么要版本控制。</p><p><b> 軟件開發(fā)的混沌</b></p><p> (1)版本較多,不知道如何選擇一個(gè)合適的版本進(jìn)行下一步的工作?</p><p> (2)團(tuán)隊(duì)經(jīng)常得不到一個(gè)可以工作的版本而苦不堪言?</p>
18、<p> (3)有多個(gè)版本而不能很好的整合?</p><p> (4)用戶出現(xiàn)問題,而你卻無法獲取和重構(gòu)用戶版本?</p><p> (5)變更[2]無法追蹤,無法有效的追溯版本的變化?</p><p> (6)經(jīng)常處在無法說清楚項(xiàng)目的真實(shí)狀態(tài)。</p><p> 以上這種情況的發(fā)生,讓開發(fā)人員和測試人員都會(huì)非常頭疼,
19、因?yàn)樵趯?shí)際生產(chǎn)環(huán)境中,如果沒有版本控制工具的協(xié)助,在實(shí)際工作中我們經(jīng)常會(huì)遇到下面的一些問題:</p><p> (1)用戶權(quán)限混亂。所有開發(fā)人員和各自負(fù)責(zé)的模版,在管理權(quán)限上沒有明確,就會(huì)出現(xiàn)如果是別人添加或刪除一個(gè)文件,又沒有文字或郵件說明,你很難發(fā)現(xiàn)。甚至出現(xiàn)文件丟失,或新版本代碼被同伴無意覆蓋等現(xiàn)象。(2)多人修改一個(gè)文件。一旦出現(xiàn)這樣的情況,很有可能別人辛勤勞動(dòng)的工作,就會(huì)毀于一旦。最原始的辦法是手
20、工打開沖突文件,逐行比較,再手工粘貼復(fù)制。更高級的做法是使用文件比較工具,但仍省不了繁雜的手工操作,一不小心,甚至?xí)胄碌腷ug。是一個(gè)費(fèi)力不討好的工作,效率低,質(zhì)量不能得以保證。 (3)在代碼整合期間引入深層BUG。開發(fā)人員互相使用文檔,對原有的代碼進(jìn)行復(fù)用和修改,又不通知其原有負(fù)責(zé)模塊的同事,使得代碼被修改,用途變得不一致,對產(chǎn)品本身產(chǎn)生更大的影響。 (4)項(xiàng)目不同版本發(fā)布困難。在產(chǎn)品開發(fā)過程中,會(huì)頻繁的進(jìn)行版本發(fā)布,
21、沒有一個(gè)好的管理工具,產(chǎn)品質(zhì)量和進(jìn)度很難得以保證。</p><p> (5)測試人員投入人力資源過多,測試時(shí)間過長,測試進(jìn)度緩慢,測試成本增加,從而導(dǎo)致軟件質(zhì)量下降。</p><p> 那么,如果有那么一套系統(tǒng)</p><p><b> (1)管理檔案</b></p><p> (2)救回刪除或被覆蓋的檔案<
22、;/p><p> (3)可以從新的版本再出發(fā)</p><p> (4)告訴你個(gè)版本間的差異</p><p> (5)告訴你專案開發(fā)的順序及修改人員</p><p> (6)凍結(jié)程序碼,以及在bug的同時(shí),修改了其它的code而增加更多新的問題</p><p> (7)從一個(gè)人到很多人都可以使用</p>
23、<p> 這就是版本控制工具的神奇妙用,因?yàn)閾碛辛税姹究刂乒ぞ呔涂梢杂行Ы鉀Q因?yàn)榇a版本不同引起的各種問題,讓我們的開發(fā)人員能更多的把精力花費(fèi)在開發(fā)上面,提高軟件質(zhì)量。而不是每次都花費(fèi)很多時(shí)間進(jìn)行代碼整合和解決版本不同帶來的各種問題。在實(shí)際工作中,就可以及時(shí)了解團(tuán)隊(duì)中其他成員的進(jìn)度,輕松比較不同版本之間的細(xì)微差別,記錄每個(gè)文件成長的每步細(xì)節(jié),利于后期使用。資料共享,避免以往靠郵件發(fā)送文件造成的混亂,人人為我,我為人人。所
24、有成員維護(hù)的實(shí)際是同一個(gè)版本庫,無需專人維護(hù)所有文件的最新版本;協(xié)同工作,大大提高團(tuán)隊(duì)工作效率,無論團(tuán)隊(duì)成員分布在天涯還是海角。</p><p><b> 版本控制的發(fā)展史</b></p><p><b> 第一代配置管理</b></p><p> (1)時(shí)間:七十年代開始</p><p>&
25、lt;b> (2)特征:</b></p><p> (a)基于文件(File Based)的版本控制。</p><p> (b)支持check-out/check-in模型。</p><p><b> (c)簡單分支</b></p><p> (3)解決問題:文件丟失和覆蓋的問題。</p
26、><p><b> (4)最佳經(jīng)驗(yàn):</b></p><p> (a)標(biāo)識工件,將工件存入安全的版本庫。</p><p> (b)控制并記錄對工件的變更。</p><p> (c)保持穩(wěn)定,一致的工作空間。</p><p><b> 第二代配置管理</b></p&
27、gt;<p> (1)時(shí)間:八十年代中后期</p><p><b> (2)特征:</b></p><p> (a)基于項(xiàng)目庫將元數(shù)據(jù)與配置項(xiàng)分開存儲管理。</p><p> (b)從而更好地支持并行開發(fā)、團(tuán)隊(duì)協(xié)作以及過程管理。</p><p> (3)解決問題:并行開發(fā)。</p>
28、<p><b> (4)最佳實(shí)踐:</b></p><p> (a)支持工件的并行開發(fā)。</p><p> (b)及早集成,經(jīng)常集成。</p><p> (c)記錄并追蹤變更跟請求。</p><p> (d)保證軟件build可重現(xiàn)。</p><p><b> 第三
29、代配置管理</b></p><p> (1)時(shí)間:2000年</p><p> (2)特征:以活動(dòng)為中心的組織和集成</p><p> (3)解決問題:如何在復(fù)雜的軟件開發(fā)中把握變更</p><p><b> (4)最佳實(shí)踐</b></p><p> (a)將工件組織成版本化
30、的構(gòu)件:“構(gòu)件的引入”——有利于邏輯設(shè)計(jì)和物理實(shí)現(xiàn)相對應(yīng),提供一種機(jī)制來更智能的創(chuàng)建和使用基線;構(gòu)件是對眾多的文件進(jìn)行合理分類以呈現(xiàn)系統(tǒng)的設(shè)計(jì)要素可以大大簡化項(xiàng)目開發(fā)控制,可以通過合理的目錄來組織構(gòu)件 。</p><p> (b)以活動(dòng)為中心的組織和集成:建立活動(dòng)——變更集的映射。</p><p> (c)在項(xiàng)目里程碑處創(chuàng)建基線:更好的標(biāo)識階段點(diǎn)和提供開發(fā)復(fù)用的基準(zhǔn)。</p>
31、;<p> 不同“級別”的版本控制工具</p><p> 版本控制在軟件項(xiàng)目開發(fā)中非常重要,但是不同的項(xiàng)目需要不同的版本控制工具,需要對所有的版本控制工具有一個(gè)認(rèn)識和理解,才能更好的運(yùn)用到工作中。所謂“工欲善其事,必先利其器”,因此需要我們從專業(yè)角度和實(shí)踐經(jīng)驗(yàn)來仔細(xì)了解、剖析一下軟件版本控制工具。</p><p> 版本控制工具也有“級別”之分,其中有“元老級”的CCC
32、(Change and Configuration Control)、RCS(Revision Control System)、SCCS(Source Code Control System),“新秀級”的Hansky Firefly ,“入門級”的Visual SourceSafe,“中堅(jiān)級”的Clearcase,還有開源軟件通用的版本控制工具CVS(Concurrent Versions System)和SVN(SubVersion
33、)。CVS在一段時(shí)期內(nèi)幾乎成為版本控制工具的“代名詞”,大概有著30多年的歷史,而SVN是CVS的理想替代者,并出自同一人之手,被一些人譽(yù)為“迄今為止最好用的開源源碼版本控制工具”。</p><p> “元老級”的CCC </p><p> CCC:Change and Configuration Control。在20世紀(jì)60年代末70年代初,軟件配置管理的概念開始提出。20世紀(jì)七十
34、年代初期加利福利亞大學(xué)的Leon Presser撰寫了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTool的公司,開發(fā)了自己的配置管理工具CCC——這也是最早的配置管理工具之一。 </p><p><b> RCS[3]</b></p><p> RCS:Revision Control System。誕生于1980年,由WALT
35、ER.f.Tichy 于美國的在Indina州的 Purdue 大學(xué)開發(fā),是基于單一文件的版本維護(hù)系統(tǒng)。</p><p><b> SCCS[4]</b></p><p> SCCS:Source Code Control System。SCCS是一種基本的程序源代碼版本控制工具,它適用于任何正文文件的版本維護(hù)?;趩我晃募陌姹究刂疲ǔK能浖Σ厥液鸵S護(hù)的
36、文件在同一目錄下. SCCS 工作時(shí),有一個(gè)專門的SCCS 格式的文件保留其源文件的編碼版本,其記錄了足夠的信息來生成新的版本,并記錄了誰對文件有修改權(quán),擁有該版本的“鎖”。</p><p> “新秀級”的Hansky Firefly[5] </p><p> Hansky Firefly:作為 H a n s k y 公司軟件開發(fā)管理套件中重要一員的Firefly,可以輕松管理、維護(hù)
37、整個(gè)企業(yè)的軟件資產(chǎn),包括程序代碼和相關(guān)文檔。Firefly是一個(gè)功能完善、運(yùn)行速度極快的軟件配置管理系統(tǒng),可以支持不同的操作系統(tǒng)和多種集成開發(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)境中。它的安裝配置過程簡單易用,F(xiàn)irefly 可以自動(dòng)、安全地保存代碼的每一次變化內(nèi)容,避免代碼被無意中覆蓋、修改。項(xiàng)
38、目管理人員使用Firefly可以有效地組織開發(fā)力量進(jìn)行并行開發(fā)和管理項(xiàng)目中各階段點(diǎn)的各種資源,使得產(chǎn)品發(fā)布易于管理;并可以快速地回溯到任一歷史版本。系統(tǒng)管理員使用Firefly的內(nèi)置工具可以方便的進(jìn)行存儲庫的備份和恢復(fù),而不依賴于任何第三方工具。</p><p> “入門級”的Visual SourceSafe[6]</p><p> Visual SourceSafe:簡單易用、方便
39、高效、與Windows操作系統(tǒng)及微軟開發(fā)工具高度集成。</p><p> “中堅(jiān)級”的Clearcase </p><p> Clearcase:IBM旗下Rational公司(2003年被IBM收購)的一款重量級的軟件配置管理(SCM, Software Configuration Managemen)工具。與CVS和VSS不同,Clearcase涵蓋的范圍包括版本控制、建立管理、工
40、作空間管理和過程控制。從最初的軟件配置計(jì)劃,到配置項(xiàng)的確立,從變更控制到版本控制,Clearcase貫穿于整個(gè)軟件生命周期。 Clearcase支持現(xiàn)有的絕大多數(shù)操作系統(tǒng),但它的安裝、配置、使用相對較復(fù)雜,并且需要進(jìn)行團(tuán)隊(duì)培訓(xùn)。</p><p> ClearCase的核心功能是版本控制,它是對在軟件開發(fā)進(jìn)程中一個(gè)文件或一個(gè)目錄發(fā)展過程進(jìn)行追蹤的手段。ClearCase對所有文件系統(tǒng)對象(包括文件、目錄和鏈接)增
41、強(qiáng)了版本控制系統(tǒng)功能??啥ò姹镜奈募ㄔ创a、可執(zhí)行文件、位圖文件、需求文檔、設(shè)計(jì)說明、測試計(jì)劃、和一些ASCII和非ASCII文件。目錄的版本記錄了整個(gè)組織基礎(chǔ)資源的發(fā)展?fàn)顩r,包括源文件的建立、重新命名、重新構(gòu)造和刪除操作等。 這種版本控制系統(tǒng)提供了先進(jìn)的版本分支和歸并功能用于支持并行開發(fā)。 </p><p> 開源軟件通用的CVS[7]和SVN</p><p> CVS:Conc
42、urrent Versions System</p><p> CVS 是有著三十年以上的時(shí)間的考驗(yàn)。CVS是開放源代碼軟件世界的一個(gè)偉大杰作,有人認(rèn)為如今開源成功發(fā)展的幕后功臣之一當(dāng)CVS莫屬。Linux 的創(chuàng)始人 Linus 就把 Linux 的成功,歸因于 CVS。由于CVS功能強(qiáng)大,跨平臺,支持并發(fā)版本控制,而且免費(fèi),所以它在全球中小型軟件企業(yè)中得到了廣泛使用。CVS最大的遺憾就是缺少相應(yīng)的技術(shù)支持,許
43、多問題的解決需要自已尋找資料,甚至是研究源代碼。CVS是一個(gè)典型的服務(wù)器/客戶端軟件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。CVS支持遠(yuǎn)程管理,項(xiàng)目組分布開發(fā)時(shí)一般都采用CVS。 </p><p> SVN:SubVersion</p><p> CVS縱然易用,但也有一些與生俱來的缺點(diǎn),比如CVS不支持文件改名,只對文件控制版本而沒有針對目錄的
44、管理,等等。之后CVS 的創(chuàng)始人之一在其現(xiàn)任公司的資助下開發(fā)了SubVersion,用以替代CVS。SubVersion 的設(shè)計(jì)目的就是針對CVS 的一些弱點(diǎn)進(jìn)行改進(jìn)。</p><p> 下面從幾個(gè)具體介紹Subversion。</p><p> Subversion是什么?Subversion是一個(gè)自由/開源版本控制系統(tǒng),它管理文件和目錄可以超越時(shí)間。一組文件存放在中心版本庫,這個(gè)版
45、本庫很像一個(gè)普通的文件服務(wù)器,只是它可以記錄每一次文件和目錄的修改,這便使你可以取得數(shù)據(jù)以前的版本,從而可以檢查所作的更改。從這個(gè)方面看,許多人把版本控制系統(tǒng)當(dāng)作一種“時(shí)間機(jī)器”。</p><p> Subversion的歷史:2000年,CollabNet,Inc就開始尋找CVS替代產(chǎn)品的開發(fā)人員。CollabNet提供了一個(gè)名為CollabNet企業(yè)版(CEE)的協(xié)作軟件套件。這個(gè)軟件套件的一個(gè)組成部分就是
46、版本控制系統(tǒng)。盡管CEE在最初采用了CVS作為其版本控制系統(tǒng),但是CVS的局限性從一開始就很明顯,CollabNet知道,遲早要找到一個(gè)更好的替代品。遺憾的是,CVS已經(jīng)成為開源世界事實(shí)上的標(biāo)準(zhǔn),很大程度上是因?yàn)闆]有更好的替代品,至少是沒有可以自由使用的替代品。所以CollabNet決定從頭編寫一個(gè)新的版本控制系統(tǒng),這個(gè)系統(tǒng)保留CVS的基本思想,但是要修正其中錯(cuò)誤和不合理的特性。</p><p> 2000年2
47、月,他們聯(lián)系到OpenSource Development with CVS(Coriolis,1999)的作者Karl Fogel,并且詢問他是否希望為這個(gè)新項(xiàng)目工作。巧合的是,當(dāng)時(shí)Karl正在與朋友Jim Blandy討論設(shè)計(jì)一個(gè)新的版本控制系統(tǒng)。1995年時(shí),他們兩人曾經(jīng)開辦了一個(gè)提供CVS支持的公司CyclicSoftware,盡管他們最終賣掉了公司,但還是天天使用CVS進(jìn)行日常工作。使用CVS時(shí)的挫折促使Jim認(rèn)真的思考如何管
48、理版本化的數(shù)據(jù),并且他當(dāng)時(shí)不僅使用了“Subversion”這個(gè)名字,并且已經(jīng)完成了Subversion版本庫的最初設(shè)計(jì)。所以當(dāng)CollabNet提出邀請的時(shí)候,Karl馬上同意為這個(gè)項(xiàng)目工作,同時(shí)Jim也找到了他的雇主—RedHat軟件公司—允許他到這個(gè)項(xiàng)目工作,并且沒有限定最終的期限。CollabNet雇傭了Karl和BenCollinsSussman,詳細(xì)設(shè)計(jì)工作從三月開始,在Behlendorf、CollabNet、JasonR
49、obbins和GregStein(當(dāng)時(shí)是一個(gè)獨(dú)立開發(fā)者,活躍在WebDAV/DeltaV系統(tǒng)規(guī)范制訂工作中)</p><p> 14個(gè)月的編碼[8],2001年8月31日,Subversion能夠“自己管理自己”了,開發(fā)者停止使用CVS保存Subversion的代碼,而使用Subversion本身。</p><p> Subversion的功能介紹:</p><p&
50、gt; (1)包含絕大部分CVS的功能</p><p> CVS是最基本的版本控制系統(tǒng)。Subversion包含了CVS的大部分功能,并且針對有些功能還稍加改進(jìn)。 </p><p> (2)目錄的版本化 </p><p> subversion將目錄名以版本號的形式體現(xiàn)。 </p><p> (3)基于版本的復(fù)制,刪除和重命名 &l
51、t;/p><p> 無論復(fù)制,刪除還是重命名,都會(huì)被打上版本號,盡管這 聽上去有些奇怪。 </p><p> (4)自由的版本化元數(shù)據(jù)操作 </p><p> subversion允許任何元數(shù)據(jù)附加在文件或目錄中。這些屬性是 鍵/值對,并且被版本化。subversion也提供對修訂版附加任何鍵/值屬性的方法,這些屬性不會(huì)被版本化因?yàn)樗麄儠?huì)自動(dòng)將元數(shù)據(jù)附加到版本空間
52、中,但他們可以隨時(shí)被更改。 </p><p><b> (5)混合追蹤 </b></p><p> subversion 1.5開始, 加入了混合追蹤功能。</p><p><b> (6)文件鎖</b></p><p> 支持文件鎖定,當(dāng)多個(gè)用戶試圖編輯同一個(gè)文件時(shí)會(huì)收到警告。 </
53、p><p> (7)apache網(wǎng)絡(luò)服務(wù)的支持,基于WebDAV/DeltaV協(xié)議[9] </p><p> 使用基于HTTP的WebDAV/DeltaV協(xié)議進(jìn)行網(wǎng)絡(luò)通信,而apache網(wǎng)絡(luò)服務(wù)器提供網(wǎng)絡(luò)存儲的站點(diǎn)服務(wù)。 </p><p> (8)可執(zhí)行的標(biāo)簽 </p><p> 當(dāng)一個(gè)文件是可執(zhí)行的時(shí)候subversion會(huì)提示,并且當(dāng)
54、這個(gè)可執(zhí)行的文件被放在版本控制中時(shí),subversion會(huì)防止該程序檢查其他目錄,恢復(fù)到一個(gè)較早的版本。</p><p> (9)獨(dú)立進(jìn)程模式 </p><p> subversion可以運(yùn)行在獨(dú)立模式下。 </p><p> (10)一個(gè)只讀的存儲鏡像[10]</p><p> subversion提供一個(gè)工具,svnsync,用于
55、同步主服務(wù)器上的文件到一個(gè)子存儲服務(wù)器上,并且標(biāo)為只讀的屬性。</p><p> 我們通過上面的功能介紹已經(jīng)了解了SVN,那么CVS與SVN之有什么依存關(guān)系和不同之處那?我們知道:CVS是使用最廣泛的版本管理軟件。CVS——Concurrent Version System:協(xié)同版本控制系統(tǒng),服務(wù)器上保存所有的開發(fā)項(xiàng)目,開發(fā)者們通過服務(wù)器上的共享目錄,共同開發(fā)同一個(gè)項(xiàng)目,達(dá)到追蹤所有的工作進(jìn)度,而服務(wù)器上也會(huì)保
56、存歷史版本信息,以方便開發(fā)者的排錯(cuò)。 通過下面的對比,我們更能做出對產(chǎn)品更全面的認(rèn)識。</p><p> SVN與CVS對比的優(yōu)點(diǎn)如下:</p><p> (1)統(tǒng)一的版本號。CVS是對每個(gè)文件順序編排版本號,在某一時(shí)間各文件的版本號各不相同。而Subverison下,任何一次提交都會(huì)對所有文件增加到同一個(gè)新版本號,即使是提交并不涉及的文件。所以,各文件在某任意時(shí)間的版本號是相同的。版
57、本號相同的文件構(gòu)成軟件的一個(gè)版本。</p><p> (2)原子提交[11]。一次提交不管是單個(gè)還是多個(gè)文件,都是作為一個(gè)整體提交的。在這當(dāng)中發(fā)生的意外例如傳輸中斷,不會(huì)引起數(shù)據(jù)庫的不完整和數(shù)據(jù)損壞。</p><p> (3)重命名、復(fù)制、刪除文件等動(dòng)作都保存在版本歷史記錄當(dāng)中。</p><p> (4)對于二進(jìn)制文件,使用了節(jié)省空間的保存方法。</p&
58、gt;<p> (5)目錄也有版本歷史。整個(gè)目錄樹可以被移動(dòng)或者復(fù)制,操作很簡單,而且能夠保留全部版本記錄。</p><p> (6)分支的開銷非常小。</p><p> (7)優(yōu)化過的數(shù)據(jù)庫訪問,使得一些操作不必訪問數(shù)據(jù)庫就可以做到。這樣減少了很多不必要的和數(shù)據(jù)庫主機(jī)之間的網(wǎng)絡(luò)流量。</p><p> 技術(shù)的潮流大勢-開源版本工具</p
59、><p> 通過第3章對各種版本控制工具的介紹,相信你們對版本控制有了初步的了解,那么各種版本控制都有自己的特點(diǎn),都有產(chǎn)品本身的利和弊,那么怎么樣來判斷他們的優(yōu)劣,然后可以更加適用自己的工作那?那么,本章針對現(xiàn)在軟件開發(fā)項(xiàng)目中實(shí)際案例總結(jié),總是會(huì)選擇開源版本控制工具,為什么會(huì)這樣做?</p><p> 選擇開源版本控制工具的理由</p><p> 先來看下CVS的
60、基本工作模式:</p><p> 圖4-1 CVS基本工作模式</p><p> CVS在服務(wù)器端維護(hù)代碼文檔庫,不同的開發(fā)者在本地機(jī)器上建立對應(yīng)代碼樹,并利用CVS保持本地代碼文檔同代碼文檔庫的一致。當(dāng)由于多個(gè)開發(fā)者對文件的同時(shí)修改造成本地與庫中的代碼文件沖突時(shí),CVS報(bào)告并協(xié)助解決沖突代碼的合并問題。普通開發(fā)者(非管理員)對CVS的使用流程如下所示:</p><
61、p> 圖4-2 CVS使用流程</p><p> Check out命令只需在開始建立本地代碼樹時(shí)使用一次,其后更新本地代碼則使用update命令。update命令比較服務(wù)器和本地代碼庫的區(qū)別,并把本地代碼樹中過時(shí)的文件自動(dòng)更新。當(dāng)完成對代碼的修改之后,在提交代碼之前同樣需要使用update命令,以獲取他人并行修改的的代碼。如果出現(xiàn)沖突(即對同一文件同時(shí)進(jìn)行了修改),CVS將在本地代碼中把兩者都保留并標(biāo)
62、記出來,要求開發(fā)者處理沖突。在沖突不存在或已解決的情況下,使用commit命令將服務(wù)器代碼更新為本地代碼。CVS要求為更改提供注釋,并自動(dòng)為更新的文件處理版本編號。當(dāng)軟件需要正式發(fā)布時(shí),使用export命令導(dǎo)出不包含CVS設(shè)置信息的源代碼樹。 </p><p> 即使不用拿CVS的升級版SVN,就算是拿沒有目錄版本控制功能的 CVS 來和商業(yè)的版本控制工具相比,我們也有充足的選擇開源版本控制工具的理由。<
63、/p><p> 服務(wù)器端是否和客戶端一樣看起來很美?</p><p> 有一些商業(yè)軟件[12]的服務(wù)器端簡直就像是一個(gè)垃圾場,用流水號命名的文件名,一個(gè)目錄下動(dòng)輒成千上萬個(gè)文件。CVS以文件為核心,即面向文件的管理方式,項(xiàng)目文件可以方便地組合和移植。</p><p> 服務(wù)器端是否在使用數(shù)據(jù)庫來作版本控制的數(shù)據(jù)引擎?</p><p> 為
64、了支持目錄的版本控制工具,大多數(shù)商業(yè)軟件選擇了一個(gè)最為簡單和直接的解決方案——數(shù)據(jù)庫,用數(shù)據(jù)庫將文件名和版本庫對應(yīng)。但是引入數(shù)據(jù)庫,服務(wù)器的穩(wěn)定性、可維護(hù)性大大下降,成為管理員的噩夢。增量備份計(jì)劃難以實(shí)現(xiàn),不知道什么時(shí)候會(huì)出現(xiàn)數(shù)據(jù)庫崩潰。</p><p> 是否支持到其他版本控制系統(tǒng)的遷移? </p><p> 對于商業(yè)軟件,這個(gè)答案是否定的。如果允許將版本庫導(dǎo)出到其他版本控制系統(tǒng),簡
65、直就是將自己好不容易積累的客戶拱手相讓。</p><p> 可否定制?是否可以對提交說明(Commit Log)進(jìn)行檢查?可否每一次的提交事件能夠收到郵件通知? </p><p> CVS 的 CVSROOT 腳本擴(kuò)展[13],以及 SVN 的 Hooks 鉤子腳本,可以讓用戶充分發(fā)揮想像的空間。而商業(yè)版本控制工具,有此功能的寥寥。 </p><p> 客戶端
66、是如何狀態(tài)保持的? </p><p> 熟悉 CVS 和 SVN 的用戶應(yīng)該知道工作目錄下的 CVS 和 .svn 隱含目錄的作用,就是用于記錄版本控制狀態(tài)信息的。而很多商業(yè)軟件并沒有這個(gè)機(jī)制,而是靠服務(wù)器端來維護(hù)此記錄:哪臺主機(jī)、檢出哪個(gè)版本的代碼、存儲到哪個(gè)目錄。這么做的一個(gè)弊病就是工作目錄不能自由在硬盤中移動(dòng),系統(tǒng)重裝導(dǎo)致的狀態(tài)丟失。 </p><p><b> 成本因
67、素 </b></p><p> 一是軟件采購成本[14]。商業(yè)軟件版本控制工具動(dòng)輒十幾萬美金,而且是和用戶數(shù)目掛鉤的。二是學(xué)習(xí)成本。商業(yè)軟件版本控制工具的部署范圍非常有限,不能保證新員工一定熟悉該系統(tǒng),但是如果選擇開源的版本控制工具,那么員工的培訓(xùn)費(fèi),可能就可以省下了。 </p><p> 客戶確認(rèn)軟件中沒有木馬、間諜軟件么? </p><p>
68、客戶肯定不會(huì)去購買你競爭對手開發(fā)的版本控制工具,那么您為什么還會(huì)相信其他閉源的版本控制工具呢? </p><p> 再優(yōu)秀的版本控制工具都是軟件項(xiàng)目[15]開發(fā)中的一部份,況且,一個(gè)項(xiàng)目的完成并不只只涉及版本控制工具,還包括其他的一些工具。一個(gè)軟件項(xiàng)目的開發(fā)成功需要涉及工具的使用,開發(fā)人員資源的管理等因素。但是,選擇一款優(yōu)秀的、適合開發(fā)團(tuán)隊(duì)和項(xiàng)目需求的版本控制工具能夠提高開發(fā)工作效率和代碼的優(yōu)質(zhì)性。對于版本控制
69、工具的選擇,秉持的一個(gè)原則是“不選貴的,只選對的?!?lt;/p><p><b> 總結(jié)與展望</b></p><p> 通過這次的軟件工程課程設(shè)計(jì),我比較熟練的掌握了軟件開發(fā)的基本思想以及軟件開發(fā)的基本流程。我受到了一次用專業(yè)知識、專業(yè)技能分析和解決問題的全面系統(tǒng)的鍛煉。并且在綜合知識的選用方面,在應(yīng)用軟件開發(fā)的基本思想、方法方面都向前邁了一大步。為日后成為合格的測
70、試人員打下良好的基礎(chǔ)。這次在指導(dǎo)老師的幫助下,在同事的幫助下,基本上完成了畢業(yè)設(shè)計(jì),在軟件的設(shè)計(jì)方面也有了一定的提高,熟練掌握了SVN版本控制工具的使用,為今后的工作打下了扎實(shí)的專業(yè)基礎(chǔ)。</p><p> 在這次的課程設(shè)計(jì)中,讓我深刻認(rèn)識到版本控制工具的妙用,開始我只是以完成任務(wù)的心態(tài)去學(xué)習(xí)版本控制軟件的使用。但隨著慢慢深入的學(xué)習(xí)和使用,再結(jié)合以前工作中遇到開發(fā)人員因沒有正確運(yùn)用版本控制軟件而造成的種種麻煩,
71、終于讓我體會(huì)到了版本控制工具的無窮妙用。由于現(xiàn)在的軟件開發(fā)項(xiàng)目幾乎都是多個(gè)開發(fā)人員共同負(fù)責(zé)同一個(gè)軟件文檔的開發(fā),每個(gè)人在各自的機(jī)器上有整個(gè)軟件文檔的備份,并對之實(shí)施編程開發(fā),在分別完成各自任務(wù)之后,再通過文本比對工具將各自機(jī)器上的不同版本的程序整合到一臺機(jī)器上,故對我們這些有可能會(huì)從事軟件開發(fā)工作的人來說,掌握軟件控制工具是我們的必備技能之一。讓我也體會(huì)到進(jìn)行軟件開發(fā)不是一件簡單的事情,它需要設(shè)計(jì)者具有全面的專業(yè)知識、縝密的思維、嚴(yán)謹(jǐn)?shù)?/p>
72、工作態(tài)度以及較高的分析問題、解決問題的能力,而我在很多方面還有欠缺。在以后的學(xué)習(xí)過程中我會(huì)從這次課程設(shè)計(jì)中汲取教訓(xùn)并尋求高效率優(yōu)方法的學(xué)習(xí)態(tài)度不斷充實(shí)自我完善自我。</p><p><b> 注釋</b></p><p><b> [1] </b></p><p> [2]張海潘:《軟件工程》北京清華大學(xué)出版版社,
73、2003年4月第一版</p><p> [3]SVN搭建和使用手冊 </p><p> [4]SubVersion的好處 </p><p> [5] (美)梅森(Mike Mason)版本控制之道,電子工業(yè)出版社,2007年3月1日出版 </p><p> [6]董越:未雨綢繆:理解軟件配置管理(第2版),2012年6月1日
74、,電子工業(yè)出版社</p><p> [7] [美]Paul M. Duvall (保羅.M. 杜瓦爾)Steve Matyas (史蒂夫.邁耶斯) Andrew Glover(安德魯.格洛弗) 著,王海鵬 譯: 持續(xù)集成:軟件質(zhì)量改進(jìn)和風(fēng)險(xiǎn)降低之道,電子工業(yè)出版社,2012年6月</p><p> [8]謝希仁:計(jì)算機(jī)網(wǎng)絡(luò).北京:電子工業(yè)出版社,2008</p><
75、p> [9] 薩師煊、王珊《數(shù)據(jù)庫系統(tǒng)概論(第四版)》, 高等教育出版社,2005年4月</p><p> [10]SVN中文教程 </p><p> [11] 版本控制軟件 </p><p> [12] (美)瓦力(Wali,U)著,李紀(jì)華譯,人民郵電出版社,2006年7月</p><p> [13]陽王東等編著,軟件項(xiàng)目
76、管理與實(shí)踐,水利水電出版社,2009年1月</p><p> [14] SubVersion的好處 </p><p> [15] 孫強(qiáng)南,孫昱東.計(jì)算機(jī)體系結(jié)構(gòu)(第二版).北京科學(xué)出版社,2000</p><p><b> 致 謝</b></p><p> 首先,我要衷心感謝老師在我的課程設(shè)計(jì)過程中給予我的極大幫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文論述如何做好版本控制
- 畢業(yè)論文如何做好建設(shè)項(xiàng)目工程造價(jià)控制
- 如何做好建設(shè)項(xiàng)目工程造價(jià)控制-畢業(yè)論文
- 如何做好建設(shè)項(xiàng)目工程造價(jià)控制——畢業(yè)論文
- 畢業(yè)論文如何做好建設(shè)項(xiàng)目工程造價(jià)控制
- 淺談如何做好工程竣工結(jié)算畢業(yè)論文
- 畢業(yè)論文---淺談如何做好秘書崗位工作
- 如何做好建設(shè)項(xiàng)目工程造價(jià)控制——畢業(yè)論文
- 論述如何做好電梯的檢驗(yàn)工作
- 工程造價(jià)畢業(yè)論文---如何做好建設(shè)項(xiàng)目工程造價(jià)控制
- 畢業(yè)論文---淺談如何做好幼兒園家長工作
- 淺談如何做好企業(yè)財(cái)務(wù)管理-畢業(yè)論文模板
- 淺談如何做好企業(yè)財(cái)務(wù)管理-畢業(yè)論文模板
- 淺析如何做好酒店實(shí)習(xí)生管理[畢業(yè)論文]
- 工程造價(jià)專業(yè)畢業(yè)論文如何做好建設(shè)項(xiàng)目工程造價(jià)控制
- 論述如何做好高中物理的復(fù)習(xí)
- 如何做好醫(yī)院成本控制
- 畢業(yè)論文-論述如何提高軟件質(zhì)量
- 商務(wù)英語專業(yè)畢業(yè)論文淺談如何做好秘書崗位工作
- 如何做好醫(yī)院財(cái)務(wù)內(nèi)部控制
評論
0/150
提交評論