<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    版本控制工具橫向比較

    ????????????????????????????????????????????????????????????????????????????????????????????????? 版本控制工具橫向比較
    版本控制是程序開發(fā)、管理必不可少的工具,特別是在多人協(xié)作的團(tuán)隊(duì)中,適宜的版本控制工具可以提高開發(fā)效率,消除很多有代碼版本帶來(lái)的問(wèn)題。本文首先列舉沒(méi)有版本控制工具時(shí)可能遇到的問(wèn)題,再對(duì)主流版本控制工具做概要介紹,之后對(duì)作為Java開發(fā)者首選的版本控制工具CVS的歷史、功能、概念做詳細(xì)的介紹;最后在Eclipse+CVS環(huán)境中,以CVS使用的一個(gè)完整流程為例,介紹如何正確的使用CVS工具。

    為什么要使用版本控制工具?
    如果沒(méi)有版本控制工具的協(xié)助,在開發(fā)中我們經(jīng)常會(huì)遇到下面的一些問(wèn)題:
    一、 代碼管理混亂。如果是別人添加或刪除一個(gè)文件,你很難發(fā)現(xiàn)。沒(méi)有辦法對(duì)文件代碼的修改追查跟蹤。甚至出現(xiàn)文件丟失,或新版本代碼被同伴無(wú)意覆蓋等現(xiàn)象。
    二、 解決代碼沖突困難。當(dāng)大家同時(shí)修改一個(gè)公共文件時(shí),解決代碼沖突是一件很頭疼的事。最原始的辦法是手工打開沖突文件,逐行比較,再手工粘貼復(fù)制。更高級(jí)的做法是使用文件比較工具,但仍省不了繁雜的手工操作,一不小心,甚至?xí)胄碌腷ug。
    三、 在代碼整合期間引入深層BUG。例如開發(fā)者A寫了一個(gè)公共函數(shù),B覺(jué)得正好可以復(fù)用;后來(lái)A又對(duì)這個(gè)公共函數(shù)進(jìn)行了修改,添加了新的邏輯,而這個(gè)改動(dòng)的卻是B不想要的。或者是A發(fā)現(xiàn)這個(gè)公共函數(shù)不夠用,又新做了一個(gè)函數(shù),B卻沒(méi)有及時(shí)獲得通知。這些,都為深層BUG留下隱患。
    四、 無(wú)法對(duì)代碼的擁有者進(jìn)行權(quán)限控制。代碼完全暴露在所有的開發(fā)者面前,任何人都可以隨意進(jìn)行增、刪、改操作,無(wú)法指定明確的人對(duì)代碼進(jìn)行負(fù)責(zé)。特別是產(chǎn)品的開發(fā),這是極其危險(xiǎn)的。
    五、 項(xiàng)目不同版本發(fā)布困難。特別是對(duì)產(chǎn)品的開發(fā),你會(huì)頻繁的進(jìn)行版本發(fā)布,這時(shí)如果沒(méi)有一個(gè)有效的管理產(chǎn)品版本的工具,一切將變得非常艱難。
    ? ?上面只是列舉了一些沒(méi)有版本控制系統(tǒng)可能帶來(lái)的問(wèn)題,特別是對(duì)大型項(xiàng)目和異地協(xié)同開發(fā)有了一個(gè)合適的版本控制工具,它可以有效解決因?yàn)榇a版本不同引起的各種問(wèn)題,讓我們的開發(fā)人員能更多的把精力花費(fèi)在開發(fā)上面。而不是每次都花費(fèi)很多時(shí)間進(jìn)行代碼整合和解決版本不同帶來(lái)的各種問(wèn)題。

    主流版本控制工具介紹
    ? ?現(xiàn)在,有很多優(yōu)秀的版本控制工具供我們選擇,下面就五種主流的版本控制工具做簡(jiǎn)單的介紹。
    Starteam
    ? ?是一個(gè)集合了版本控制、構(gòu)建管理(Build Management)和缺陷跟蹤系統(tǒng)為一體的軟件,并且具有強(qiáng)大的圖形界面,易學(xué)易用;但管理復(fù)雜、維護(hù)困難。2002年底被Borland公司收購(gòu)。
    PVCS Version Manager
    ? ? 是美國(guó)的MERANT公司軟件配置管理工具PVCS 家族中的一個(gè)組成部分,它能夠?qū)崿F(xiàn)源代碼、可執(zhí)行文件、應(yīng)用文件、圖形文件和文檔的版本管理;它能安全地支持軟件并行開發(fā),對(duì)多個(gè)軟件版本的變更進(jìn)行有效的控制管理。
    ClearCase(CC)
    ? ?是ROSE構(gòu)件的一部分,目前最牛的配置管理工具,主要應(yīng)用于復(fù)雜的產(chǎn)品發(fā)放、分布式團(tuán)隊(duì)合作、并行的開發(fā)和維護(hù)任務(wù)。可以控制word, excel,powerpoint,visio等文件格式,對(duì)于不認(rèn)識(shí)的格式可以自己定義一種類型來(lái)標(biāo)識(shí)。
    Visual SourceSafe(VSS)
    ? ?簡(jiǎn)單易用、方便高效、與Windows操作系統(tǒng)及微軟開發(fā)工具高度集成。
    CVS(Concurrent Versions System)
    ? ?是開發(fā)源碼的并發(fā)版本系統(tǒng),它是目前最流行的面向軟件開發(fā)人員的源代碼版本管理解決方案。它可用于各種平臺(tái),包括 Linux 、Unix和 Windows NT/2000/XP等等。

    ? ?前面三種是重量級(jí)的商業(yè)版本控制工具,更適合龐大的團(tuán)隊(duì)和項(xiàng)目,并且價(jià)格不菲。Visual SourceSafe是微軟的產(chǎn)品,當(dāng)然只能用在windows平臺(tái)并與微軟的開發(fā)工具無(wú)縫集成。CVS免費(fèi)開源,并且?guī)缀跛虚_源項(xiàng)目都是使用CVS進(jìn)行版本管理,無(wú)疑,它是我們Java開發(fā)者最優(yōu)選擇。

    CVS的歷史、功能、基本概念的介紹

    歷史
    ? ?CVS 誕生于 1986 年,當(dāng)時(shí)作為一組 shell 腳本而出現(xiàn);1989年3月,Brian Berlinor用C語(yǔ)言重新設(shè)計(jì)并編寫了CVS的代碼;1993年前后,Jim Kingdon最終將CVS設(shè)計(jì)成基于網(wǎng)絡(luò)的平臺(tái),開發(fā)者們能從Internet任何地方獲得程序源代碼。截至目前最新版本是2004年12月13日發(fā)布的1.12.11。

    功能介紹
    一、 代碼統(tǒng)一管理,保存所有代碼文件更改的歷史記錄。對(duì)代碼進(jìn)行集中統(tǒng)一管理,可以方便查看新增或刪除的文件,能夠跟蹤所有代碼改動(dòng)痕跡。可以隨意恢復(fù)到以前任意一個(gè)歷史版本。并避免了因?yàn)榘姹静煌氲纳顚覤UG。
    二、 完善的沖突解決方案,可以方便的解決文件沖突問(wèn)題,而不需要借助其它的文件比較工具和手工的粘貼復(fù)制。
    三、 代碼權(quán)限的管理。可以為不同的用戶設(shè)置不同的權(quán)限。可以設(shè)置訪問(wèn)用戶的密碼、只讀、修改等權(quán)限,而且通過(guò)CVS ROOT目錄下的腳本,提供了相應(yīng)功能擴(kuò)充的接口,不但可以完成精細(xì)的權(quán)限控制,還能完成更加個(gè)性化的功能。
    四、 支持方便的版本發(fā)布和分支功能。

    基本概念
    資源庫(kù)(Repository)
    CVS的資源庫(kù)存儲(chǔ)全部的版本控制下的文件copy,通常不容許直接訪問(wèn),只能通過(guò)cvs命令,獲得一份本地copy,改動(dòng)后再check in(commit)回資源庫(kù)。而資源庫(kù)通常為與工作目錄分離的。CVS通過(guò)多種方式訪問(wèn)資源庫(kù)。每種方法有不同目錄表示形式。
    版本(Revision)
    每一個(gè)文件的各個(gè)版本都不相同,形如1.1, 1.2.1,一般1.1是該文件的第一個(gè)revision,后面的一個(gè)將自動(dòng)增加最右面的一個(gè)整數(shù),比如1.2, 1.3, 1.4...有時(shí)候會(huì)出現(xiàn)1.3.2.2,原因見后。revision總是偶數(shù)個(gè)數(shù)字。一般情況下將revision看作時(shí)CVS自己內(nèi)部的一個(gè)編號(hào),而tag則可以標(biāo)志用戶的特定信息。
    標(biāo)簽(Tag)
    用符號(hào)化的表示方法標(biāo)志文件特定revision的信息。通常不需要對(duì)某一個(gè)孤立的文件作tag,而是對(duì)所有文件同時(shí)作一個(gè)tag,以后用戶可以僅向特定tag的文件提交或者checkout。另外一個(gè)作用是在發(fā)布軟件的時(shí)候表示哪些文件及其哪個(gè)版本是可用的;各文件不同revision可以包括在一個(gè)tag中。如果命名一個(gè)已存在的tag默認(rèn)將不會(huì)覆蓋原來(lái)的;
    分支(Branch)
    當(dāng)用戶修改一個(gè)branch時(shí)不會(huì)對(duì)另外的branch產(chǎn)生任何影響。可以在適當(dāng)?shù)臅r(shí)候通過(guò)合并的方法將兩個(gè)版本合起來(lái);branch總是在當(dāng)前revision后面加上一個(gè)偶數(shù)整數(shù)(從2開始,到0結(jié)束),所以branch總是奇數(shù)個(gè)數(shù)字,比如1.2后面branch為1.2.2,該分支下revision可能為1.2.2.1,1.2.2.2,...
    沖突(Conflct)
    完全是純文本的沖突,不包含邏輯上的矛盾。一般是一份文件,A做了改動(dòng),B在A提交之前也做了改動(dòng),這樣最后誰(shuí)commit就會(huì)出現(xiàn)沖突,需要手工解決沖突再提交。

    CVS與eclipse集成開發(fā)
    ?前面對(duì)CVS的歷史、功能、概論等理論知識(shí)做了介紹。下面我們將使用最流行的Java IDE Eclipse中內(nèi)置的CVS工具,以一個(gè)完整開發(fā)流程,介紹實(shí)際環(huán)境中CVS的正確使用。關(guān)于CVS系統(tǒng)的安裝,不是本文的內(nèi)容,您可以從附錄的鏈接中獲取安裝的介紹資料。

    常用的CVS控制命令
    Check Out(檢出)
    把源文件從cvs源代碼倉(cāng)庫(kù)中取出,缺省的版本是最新的版本,你也可以選擇指定的版本。在每次更改源代碼之前,需要Check Out最新的版本,再起基礎(chǔ)之上對(duì)源代碼進(jìn)行修改。將代碼目錄checkout到指定目錄下,所有文件都是read-write。
    Check In(檢入)
    把源代碼加入到cvs源代碼倉(cāng)庫(kù)中,每一個(gè)添加進(jìn)代碼庫(kù)中的文件的版本是 1.1。以后每次修改文件重新ci以后,此文件的版本遞增為1.2 ,1.3.……。在每次對(duì)源代碼修改之后,需要Check In,提交最新版本的源代碼。
    Synchronize with Repository(與資源庫(kù)同步,簡(jiǎn)稱同步)
    使本地更改與資源庫(kù)同步,它會(huì)列出本地和資源庫(kù)之間不同的所有文件。
    Add to Version Control
    將新的文件加入到版本控制之中。
    Add to .cvsIgnore
    將文件設(shè)置到版本控制之外,這樣該文件或目錄中的文件的更改在CVS中不可見,即使同步也無(wú)法發(fā)現(xiàn)。

    CVS正確使用步驟
    一、 同步(Synchronize)
    就是將本地更改與服務(wù)器同步,同步之后可以清晰的看到上一撿出(Check Out)版本之后本地、服務(wù)器上的最新改動(dòng)。這是非常有用的,特別是敏捷開發(fā),強(qiáng)調(diào)集體擁有代碼。有了同步功能,你可以全局把握項(xiàng)目的代碼,可以很方便的跟蹤公共模塊代碼的任何改動(dòng)。
    具體操作:在Eclipse的資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中,選中要同步的目錄,點(diǎn)擊右鍵選擇"Synchronize with Repository",之后它將顯示同步的視圖。

    同步之后,它有四種Mode可以選擇,見上圖綠色框框里按鈕。從做到右分別為:
    Incoming Mode:表示修改是來(lái)自服務(wù)器,對(duì)應(yīng)于更新(update)操作。
    Outgoing Mode:表示修改是來(lái)自本地,對(duì)應(yīng)提交(commit)操作。
    Incoming/ Outgoing Mode:本地和服務(wù)器修改都在該模式(Mode)中顯示。
    Conflicts Mode:顯示本地和服務(wù)器修改的沖突文件。
    二、 更新(update)
    比較簡(jiǎn)單,選擇Incoming Mode,再選中要更新的文件,右鍵選擇update操作。
    三、 解決沖突并合并(solve conflct and merge)
    如果有沖突文件,沖突文件不能更新。你必須先解決沖突再操作。選中沖突的文件,再點(diǎn)右鍵選擇"Open in Compare Editor",用比較工具打開該文件。

    比較器(Compare)視圖,左邊版本底的是本地文件(Local File),右邊是遠(yuǎn)程服務(wù)器文件(Remote File)。使用"Select Next Change"按鈕(綠框中的第一箭頭向下按鈕),逐一查看不同點(diǎn)。如果不同點(diǎn)標(biāo)識(shí)為黑色框框,則不用管它。如果是藍(lán)色框框,則需要手工調(diào)整。如上圖,不同點(diǎn)是藍(lán)色框框,將鼠標(biāo)放到兩個(gè)不同點(diǎn)的中間小方框中,則凸出一個(gè)向右的按鈕,并顯示提示信息"Copy Current Change from Right to Left",意思是將右邊服務(wù)器的不同點(diǎn)覆蓋到左邊的本地文件。點(diǎn)中此按鈕。重復(fù)這樣的操作,將所有服務(wù)器上的更改拷貝到本地。
    如果有一行代碼,本地和服務(wù)器都同時(shí)做了修改。這時(shí),修改點(diǎn)則顯示紅色框框。這時(shí),你就必須手工做正確的修改。全部修改完成,保存本地文件。
    此時(shí),如果修改點(diǎn)沒(méi)有了藍(lán)色的框框,就可以開始做合并(merge)操作了。操作也很簡(jiǎn)單,選擇該文件,點(diǎn)擊右鍵,選擇"Mark as merged"。
    注意:必須確保沒(méi)有藍(lán)色框框,即完全拷貝了服務(wù)器的修改才可以做合并(merge)操作,否則會(huì)覆蓋服務(wù)器上的代碼。
    四、 提交(commit)
    更新服務(wù)器代碼,解決沖突之后,首先要查看本地文件修改之后是否有錯(cuò)誤。如果有,當(dāng)然首先解決錯(cuò)誤,再提交。




    posted on 2006-05-28 22:57 77 閱讀(1767) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: 版本控制工具橫向比較 2013-02-26 16:01 mnomo

    版本控制軟件SourceAnywhere Standalone 的十大優(yōu)勢(shì)盤點(diǎn):http://www.evget.com/zh-CN/info/catalog/18578.html  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2013年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    242526272812
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊(cè)

    API文檔

    java開發(fā)與研究

    にほん

    上海房產(chǎn)

    東京生活

    數(shù)據(jù)庫(kù)大全

    編程與開發(fā)

    美國(guó)開發(fā)生活

    走向管理

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲中文字幕无码永久在线| 久久WWW免费人成人片| 亚洲欧洲中文日韩av乱码| 亚洲码欧美码一区二区三区| 成人毛片免费视频| 亚洲精品无播放器在线播放| 成人性生交大片免费看午夜a | 免费看a级黄色片| 亚洲国产精品嫩草影院| 成人性生交大片免费看午夜a| 亚洲另类自拍丝袜第五页| 国产成人在线观看免费网站| 国产亚洲精品91| 精品国产亚洲一区二区在线观看 | 三年片在线观看免费观看大全一| 久久精品国产亚洲AV麻豆不卡| 亚欧日韩毛片在线看免费网站| 亚洲白色白色永久观看| 九九九精品成人免费视频| 成a人片亚洲日本久久| 亚洲午夜无码片在线观看影院猛| 最近国语视频在线观看免费播放 | 亚洲成A人片在线播放器| 免费国产高清视频| 999zyz**站免费毛片| 久久亚洲春色中文字幕久久久| 最新欧洲大片免费在线| 男男黄GAY片免费网站WWW| 亚洲永久精品ww47| 麻豆一区二区免费播放网站| 最新亚洲人成网站在线观看| 亚洲色无码一区二区三区| 国产精品永久免费10000| 香蕉视频在线观看免费| 亚洲AV无码一区二区二三区入口| 无码国产精品一区二区免费式影视| 色偷偷尼玛图亚洲综合| 亚洲第一精品在线视频| 好吊妞788免费视频播放| 中出五十路免费视频| 亚洲一级毛片免费看|