《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > Java程序開發過程中的CVS控制

Java程序開發過程中的CVS控制

2009-01-08
作者:王京武,劉東波,李由

1 引言?

??? 當前的信息系統開發過程存在著以下兩個急需解決的問題。第一,開發過程中代碼的持續集成問題。過去的系統集成,開發人員必須跑遍整個開發中心,詢問每一個程序員有沒有新的代碼,然后把這些新代碼拷貝過來,再找到合適的插入位置,這樣集成方式效率低下,錯誤率極高。第二,版本控制問題。由團隊進行開發的項目,尤其是開源的項目,版本的控制是復雜的。開發人員對于版本定義的不一致,以及先前版本的內容不完整甚至是丟失都是危險的。對于上述問題最簡單的解決方案就是:使用一套具有網絡功能并且帶有讓開發者輕松獲取源代碼的配置管理系統作為所有代碼的來源,然后再使用一套版本管理工具,以做到安全正確地記錄和使用各個時期各個版本中的文件。?

??? CVS是一套出色的開放源代碼的集配置管理與版本控制一體的工具,管理所有的源文件以及軟件的版本信息。這里的源文件不僅僅是代碼源文件,還包括創建的腳本文件、屬性文件、庫文件等。?

??? 正確地在系統開發過程中,尤其是在企業級開發或開源開發過程中使用CVS控制工具,體現了軟件配置管理與版本控制相結合的思想,這也是開發人員和團隊所必須具備的技能。?

2 CVS的概念?

??? CVS(Concurrent Versions System)是目前業界使用比較廣泛,思想比較先進,控制比較簡單的配置管理與版本控制一體的工具。CVS是基于Unix體系中成熟的SCCS(Source Code Control System)和RCS(Revision Control System)開發而成的一個開放源碼的項目,已經支持在Windows操作系統上的應用。由于開放源碼項目的開發者分布很廣泛,對于源文件和版本信息的管理難度很大,需要一個結構簡單、功能強大、能夠跨平臺的工具進行控制,所以開放源碼項目配置管理與版本控制已經成為目前CVS的一個典型應用。

2.1 CVS的結構?

??? CVS的基本工作思路就是在一臺服務器上建立一個倉庫,倉庫里可以存放許多不同項目的源程序,由倉庫管理員統一管理這些源程序。這樣就好象只有一個人在修改文件一樣避免了沖突。每個用戶在使用倉庫之前,首先要把倉庫里的項目文件下載到本地。用戶做的任何修改都是在本地進行的,然后用CVS 命令進行提交,再由 CVS 倉庫管理員統一修改。這樣就可以做到跟蹤文件的變化,控制代碼的沖突。基于以上的工作思路CVS采用客戶機/服務器的結構,軟件的源文件以及各種版本信息存儲在作為倉庫的中心服務器內,開發者可以隨時通過CVS的客戶端工具將本地源文件的副本與中心服務器倉庫中的源文件保持一致。CVS的結構如圖一所示。?

圖一:CVS結構圖

2.2  CVS的重要術語?

2.2.1 Module(模塊)相互關聯的一組文件的集合,一般一個Module會和一個工程相對應。2.2.2 Respository(倉庫):存放Module的倉庫,可以在開發人員的本地也可以在遠程CVS服務器上。

2.2.3 Branch(分枝):Branch是倉庫中獨立派生的一個分離的開發版本,用于管理源文件的修改。其中HEAD作為一個特殊的Branch代表主干版本。HEAD可以分離出不同的Branch,而每個Branch中的變更又可以很容易地與HEAD進行合并。這種Branch模型通過支持源文件的并發修改,保證了不同開發者的相對獨立,但又高度集成。

2.2.4 Merge(合并):在CVS版本控制過程中,Merge作為一個核心的工作,將派生的Branch版本與HEAD的最新版本之間的變更合并到開發人員的工作目錄之中。CVS提供的Merge命令使開發人員在使用源文件時不會鎖定該文件,即同一個CVS管理的源文件可以被多個開發人員同時進行修改。

圖二:Java開發過程中CVS控制的示意圖

2.3  CVS的工作流程?

??? CVS的工作流程包括以下三個步驟。

??? 第一,預處理。通過更新操作保證所有本地源文件與最新的Branch中的源文件一致性。

??? 第二,代碼開發。在本地進行軟件代碼的開發,并在本地保存代碼的修改。

??? 第三,同步。當做好提交工作的準備后,進行與服務器的同步操作。Incoming和Outgoing是CVS工作時的兩種狀態模式,在進行Update操作時(從服務器得到其他人的修改),CVS進入Incoming狀態;在進行Commit操作時(把本地修改提交給CVS服務器),CVS進入Outgoing狀態。在同步階段中,開發人員首先通過Update操作檢查本地修改是否會造成與服務器端源文件的沖突和對完整性的破壞,最后向服務器Commit本地的修改。CVS版本控制的基本流程如圖三所示:

3 Java程序開發過程中的CVS控制?

??? Java語言具有語法簡單、安全、支持多線程、具有跨平臺性以及純面向對象等特點。為了廣泛適應各種類型的應用模式,先后出現了J2SE、J2ME以及J2EE等組件技術。

??? 現在CVS版本控制器對于Java提供了無縫的支持。眾多Java開發工具都將CVS功能內嵌到自身中,作為其版本控制的基本依托。主要支持CVS的開發工具有Borland公司的JBuilder和Eclipse組織提供的開源工具Eclipse。其中,JBuilder代表了當前主流的商用Java開發工具,Eclipse則代表了典型的開源Java開發工具。二者在最新的版本中都已經利用自身嵌入的CVS控制器實現了在本地或遠程CVS服務器上的軟件版本控制,從而將先進的版本控制思想引入到Java世界中。此外,對于其它尚未嵌入CVS的Java開發工具,開發人員還可以下載得到獨立的CVS管理器。比較常用的CVS管理器有WinCVS。三種不同的CVS管理器各有特點,下面分別介紹。

3.1 JBuilder中的CVS控制?

??? JBuilder是Borland公司的Java程序開發的主要工具,更是J2EE組件技術開發中的重要商業工具。JBuilder的標準版和企業版中集成了CVS版本控制系統功能,在JBuilder的應用瀏覽器中使用CVS的接口可以方便地訪問到CVS提供的大部分命令,從而直接訪問、使用和控制本地或遠程的CVS系統。

??? JBuilder中使用CVS的主要過程如下:第一,創建CVS倉庫(Respository)。該倉庫可以位于本地或遠程服務器;第二,創建CVS 模塊(Module)。開發人員在指定的倉庫中創建模塊,一旦工程以模塊的形成存在,那么工程的內容就都在CVS的控制之下了;第三,將JBuilder開發的源文件添加到CVS倉庫中;第四,從CVS倉庫中檢出(check out)模塊內容存放到本地工程中;第五,在檢出的本地工程中修改或刪除源文件;第六,解決與服務器倉庫中的代碼沖突,最終將本地源文件的更新內容提交到CVS倉庫中。

3.2 Eclipse中的CVS?

??? Eclipse是開源組織的Java開發工具,可以方便高效地開發J2SE和J2EE等組件技術下的信息系統或插件。Eclipse本身內置了CVS命令,不需要使用其他客戶端軟件,可以直接訪問、使用和控制CVS的服務器。

??? 作為開源項目主要使用的開發工具, Eclipse與以JBuilder為代表的商業開發工具在CVS使用上模式上有很大差別,即Eclipse沒有在本地創建CVS服務進行控制管理的功能。其原因在于使用Eclipse開發的開源項目,項目中的源文件需要高度地集中管理。開發者需要將本地的源文件提交到遠程服務器上,由開源組織統一進行控制。而JBuilder作為商用工具考慮到應用開發者面對的信息系統的類型很廣泛,對于開發規模較小的應用,源文件的控制不需要放置在CVS的遠程服務器上,可以通過在本地創建CVS服務的方式進行獨立控制。

3.3 通過WinCVS控制Java程序?

??? WinCVS是Windows操作系統下的一種CVS客戶端控制軟件,是目前對于CVS控制最為完善與靈活的軟件,其使用方法相對比較復雜。WinCVS獨立于任何開發工具,因此可以控制多種開發語言的源文件(如:Java、C/C++、Pascal)。例如,對于使用其他Java開發工具(如:Jdesigner、TextPad等等)甚至是寫字板開發的Java程序源文件,WinCVS都能夠進行控制管理。

??? 使用WinCVS的過程如下:第一,配置客戶端與服務器的參數;第二,CVS管理人員將源文件導入到服務器的模塊中;第三,CVS管理人員創建標簽、分支;第四,開發人員登錄遠程CVS服務器;第五,開發人員從服務器倉庫中檢出(checkout)模塊到本地工程(如圖四所示);第六,開發人員將本地工程修改過的文件提交到服務器的倉庫中;第七,開發人員在每次對本地的文件修改前,將服務器端倉庫中存放的文件更新到本地工程中,以保證在多人操作同一個文件時不會引起沖突;第八,開發人員將本地工程中的修改結果提交到服務器倉庫中;第九,CVS的管理人員合并不同分支(版本)的文件。在整個過程中,管理人員和開發人員可以隨時察看查看文件的當前狀態和歷史信息。

????????????

圖四:Checkout操作

4 結束語?

??? 利用CVS工具結合配置管理和版本控制的先進思想管理Java程序開發全過程,其目的是建立一整套高效安全的Java軟件項目開發的控制流程,以到達軟件工程中對于軟件開發實現過程的要求。

??? CVS工具的作用是提供快捷的方法和清晰的控制流程給開發人員。開發人員則需要在理解先進的配置管理和版本控制思想的前提下,使用CVS工具結合Java開發工具做到真正的高效管理。總之,在現代的項目開發過程中,CVS已經成為解決代碼持續集成與版本控制的有效工具。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内成+人亚洲| 亚洲午夜精品国产| 国产精品无码专区在线观看| 欧美精品久久久久a| 老色鬼久久亚洲一区二区| 久久er99精品| 久久国产精品免费一区| 欧美一级电影久久| 欧美怡红院视频一区二区三区| 亚洲欧美成人网| 亚洲一区二区三区精品在线 | 亚洲深夜福利视频| 一区二区三区不卡视频在线观看 | 久久久久久午夜| 久久精品一本| 久久久亚洲国产天美传媒修理工| 久久激情中文| 久热国产精品| 欧美成人性生活| 欧美理论电影在线播放| 欧美日韩直播| 国产精品入口日韩视频大尺度| 国产精品视频导航| 国产亚洲成精品久久| 黄色成人在线观看| 亚洲国产美女| 一本色道久久综合狠狠躁篇的优点 | 亚洲精品视频在线播放| 一区二区日韩免费看| 亚洲一区二区av电影| 欧美亚洲视频在线观看| 亚洲国产欧美一区| 99综合在线| 亚洲欧美视频| 久久婷婷久久一区二区三区| 欧美成在线视频| 国产精品国产三级国产普通话三级| 国产乱码精品一区二区三区忘忧草| 国产一区二区日韩精品| 亚洲国产中文字幕在线观看| 99精品视频一区二区三区| 亚洲欧美日韩另类| 亚洲国产你懂的| 亚洲夜间福利| 久久久精品欧美丰满| 欧美国产视频在线| 国产精品一区二区三区乱码| 精品成人a区在线观看| 亚洲免费av网站| 亚洲一区在线播放| 亚洲黄色成人网| 亚洲一区免费观看| 久久综合伊人77777麻豆| 欧美日韩一区二区视频在线观看| 国产欧美精品久久| 亚洲国产欧美一区二区三区久久| 亚洲视频免费| 亚洲精品乱码久久久久久黑人| 亚洲无线一线二线三线区别av| 久久久精品国产免大香伊| 欧美日韩国产一区二区三区| 国产偷久久久精品专区| 亚洲欧洲午夜| 久久er精品视频| 亚洲一区二区三区精品视频 | 国产精品v欧美精品v日韩 | 欧美日韩aaaaa| 国产一区二区三区成人欧美日韩在线观看| 亚洲第一精品夜夜躁人人爽| 亚洲一区二区黄色| 亚洲伦理在线| 久久久久中文| 国产精品久久看| 亚洲人体大胆视频| 久久aⅴ国产欧美74aaa| 亚洲一区在线免费| 欧美国产一区二区在线观看| 国产日韩亚洲欧美精品| 夜夜嗨一区二区三区| 91久久嫩草影院一区二区| 欧美在线看片| 欧美视频免费在线观看| 亚洲第一福利在线观看| 欧美一级视频一区二区| 亚洲欧美激情视频在线观看一区二区三区| 欧美不卡视频一区| 国内久久婷婷综合| 午夜精品久久久久久久白皮肤| 一区二区三区高清在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产日韩欧美高清| 亚洲一区二区三区视频| 亚洲视频观看| 欧美激情视频免费观看| 影音先锋久久资源网| 午夜在线a亚洲v天堂网2018| 亚洲尤物在线视频观看| 欧美全黄视频| 91久久黄色| 亚洲精品黄色| 免费成人在线视频网站| 韩日在线一区| 欧美在线看片| 欧美在线视频免费| 国产欧美日韩免费| 亚洲欧美日本伦理| 亚洲欧美日韩国产成人精品影院| 欧美日韩中文字幕精品| 亚洲欧洲美洲综合色网| 亚洲精品一区二区三| 欧美激情精品久久久久久| 亚洲二区精品| 亚洲精品在线二区| 欧美精品一区二区蜜臀亚洲| 91久久精品一区| 99国产精品视频免费观看| 欧美激情按摩在线| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲国产日韩精品| 欧美a级片网站| 亚洲欧洲中文日韩久久av乱码| 亚洲精品午夜| 欧美日韩国产区一| 一本一本久久| 先锋影音国产一区| 国产日韩欧美三区| 久久精品国产成人| 美日韩丰满少妇在线观看| 亚洲电影免费| 一区二区久久久久| 国产精品久久久久天堂| 亚洲专区一区二区三区| 久久成人18免费网站| 国产一区二区中文字幕免费看| 亚洲二区在线观看| 欧美激情一区二区三级高清视频| 亚洲美女免费精品视频在线观看| 亚洲午夜精品网| 国产精品一区2区| 欧美中文字幕不卡| 欧美成人一区二区三区片免费| 亚洲乱码国产乱码精品精 | 欧美第一黄色网| 一本色道久久综合亚洲精品不 | 99综合在线| 午夜在线播放视频欧美| 国产综合色一区二区三区| 亚洲精品视频在线| 欧美视频三区在线播放| 小处雏高清一区二区三区 | 欧美女人交a| 亚洲专区一区| 欧美h视频在线| 亚洲天堂av在线免费| 久久久一二三| 亚洲日韩成人| 欧美一区二区三区播放老司机 | 午夜欧美不卡精品aaaaa| 蜜桃av久久久亚洲精品| 一本久道久久综合狠狠爱| 久久精品视频免费播放| 亚洲国产日韩精品| 午夜性色一区二区三区免费视频| 国产在线播放一区二区三区| 99精品视频免费| 国产欧美va欧美va香蕉在| 最新国产の精品合集bt伙计| 欧美视频中文在线看| 久久国产精品一区二区三区| 欧美激情视频一区二区三区免费| 亚洲一区bb| 欧美大片一区二区三区| 亚洲在线免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美日韩视频免费播放| 欧美在线视频免费播放| 欧美日韩ab| 久久国产免费| 欧美午夜精品久久久久久超碰| 久久国产夜色精品鲁鲁99| 欧美色区777第一页| 亚洲福利视频一区| 国产精品美女久久久久av超清 | 午夜综合激情| 亚洲精品一区久久久久久| 久久成人av少妇免费| 亚洲肉体裸体xxxx137| 久久久人人人| 亚洲一区国产视频| 欧美激情影院| 久久精品亚洲一区| 国产精品综合| 亚洲私人影院在线观看| 在线成人av网站| 欧美一区亚洲一区| 一本大道久久a久久精品综合| 美女视频一区免费观看| 欧美亚洲免费电影| 国产精品久久久久一区| 一区二区动漫|