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

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

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

    forget and forget

    能吃能睡是福;能忘是大福......

    posts - 39, comments - 26, trackbacks - 0, articles - 10
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    使用 Eclipse 平臺(tái)共享代碼

    Posted on 2006-07-26 18:00 橘子 閱讀(730) 評(píng)論(0)  編輯  收藏 所屬分類: 程序開發(fā)

    在團(tuán)隊(duì)項(xiàng)目中共享源代碼
    現(xiàn)今的大多數(shù)應(yīng)用程序是由多人組成的團(tuán)隊(duì)開發(fā)的。即使只涉及幾個(gè)開發(fā)人員的小項(xiàng)目,也需要對源代碼的更改進(jìn)行嚴(yán)格控制。這就是源代碼管理軟件的任務(wù)。源代碼版本控制軟件必須支持兩個(gè)核心功能:

    • 提供一種方法,能夠協(xié)調(diào)對源代碼的更改,并能集成這些更改
    • 團(tuán)隊(duì)所提交工作的歷史記錄

    當(dāng)團(tuán)隊(duì)成員完成新的工作時(shí),通過將這些更改提交到資源庫來共享他們的工作。類似地,當(dāng)他們希望獲得最新可用的工作成果時(shí),就可以根據(jù)資源庫中的更改,更新自己的本地工作空間。這意味著項(xiàng)目資源庫會(huì)因團(tuán)隊(duì)成員提交新工作成果而經(jīng)常發(fā)生更改。換句話說,資源庫應(yīng)該表示項(xiàng)目的當(dāng)前狀態(tài)。任何時(shí)候,團(tuán)隊(duì)成員都要能夠根據(jù)資源庫更新自己的工作空間,并確信它們是最新的。

    維護(hù)歷史記錄也很重要,那樣就可以將當(dāng)前工作與先前版本進(jìn)行比較,如有必要,還可以回復(fù)到先前版本。協(xié)調(diào)團(tuán)隊(duì)的工作,以便只存在唯一的當(dāng)前項(xiàng)目狀態(tài)定義,以及包含團(tuán)隊(duì)已集成的工作,這些對于管理版本控制也是十分必要的。這種協(xié)調(diào)有可能是最難實(shí)現(xiàn)的目標(biāo)。

    最理想的模型是:團(tuán)隊(duì)的任何成員都可以對自己有權(quán)訪問的任何資源進(jìn)行更改。因?yàn)閮蓚€(gè)團(tuán)隊(duì)成員可以提交對同一資源的更改,所以有可能發(fā)生沖突,必須解決這種沖突。這種模型假定沖突具有唯一性。但遺憾的是,沒有任何源代碼是孤立地存在的;通常它包含與其它資源隱式或顯式的相關(guān)性。源代碼引用了在其它源代碼資源中描述的構(gòu)件。但源代碼管理軟件的工作就到此為止了,因?yàn)樗⒉荒苋〈?xiàng)目管理。項(xiàng)目管理者必須履行其職責(zé):協(xié)調(diào)其它成員的工作以及負(fù)責(zé)進(jìn)度、項(xiàng)目階段和發(fā)布日期。此外,源代碼管理也不能替代開發(fā)人員之間的交流。

    Eclipse 平臺(tái)如何支持代碼管理
    Eclipse 平臺(tái)提供了作為團(tuán)隊(duì)在軟件項(xiàng)目中共享代碼和工作的能力。Eclipse 廣泛地支持各種代碼管理解決方案,這要?dú)w功于它的插件體系結(jié)構(gòu)(不過,現(xiàn)已推出了對 CVS 的支持)。Eclipse 平臺(tái)體系結(jié)構(gòu)的重點(diǎn)在于工作空間。工作空間維護(hù)構(gòu)建和測試軟件項(xiàng)目所需的一切。它包含對象(源代碼和資源)。它還保存了用于項(xiàng)目、IDE 和插件的配置設(shè)置。工作空間是在開發(fā)人員的機(jī)器上本地進(jìn)行維護(hù)的,而團(tuán)隊(duì)通過外部資源庫進(jìn)行協(xié)作,不同開發(fā)人員的代碼在資源庫進(jìn)行匯集。可以經(jīng)由因特網(wǎng)通過“客戶機(jī)-服務(wù)器”體系結(jié)構(gòu)訪問資源庫。

    Eclipse 平臺(tái)提供了對于直接從工作空間進(jìn)行團(tuán)隊(duì)開發(fā)操作的支持。這種支持允許開發(fā)人員并發(fā)地與幾個(gè)獨(dú)立的資源庫以及不同版本的代碼或項(xiàng)目進(jìn)行交互。工作空間中的資源允許團(tuán)隊(duì)支持組件處理版本和配置管理問題。當(dāng)然,單個(gè)工作空間可以同時(shí)訪問不同類型的資源庫。Eclipse 平臺(tái)并沒有提供它自己的代碼管理解決方案;它總是依靠外部系統(tǒng)。Eclipse 平臺(tái)只對一個(gè)(但也是最流行的一個(gè))源代碼管理系統(tǒng)提供內(nèi)置支持:并發(fā)版本控制系統(tǒng)(Concurrent Versions System,CVS)。對第三方代碼管理應(yīng)用程序的支持一節(jié)中描述了使用第三方插件支持其它資源庫。

    CVS 是什么?
    CVS 誕生于 1986 年,當(dāng)時(shí)作為一組 shell 腳本而出現(xiàn),但它現(xiàn)在已經(jīng)發(fā)展成了最流行的針對軟件開發(fā)人員的源代碼版本管理解決方案。CVS 是用于代碼版本管理的開放源碼的客戶機(jī)/服務(wù)器解決方案,它可用于各種平臺(tái),包括 Linux 和 Windows NT/2000/XP。請參閱本文末尾的參考資料,其中有 CVS 客戶機(jī)、服務(wù)器和源代碼的下載鏈接。

    通常,CVS 的主要功能是記錄源文件的歷史。當(dāng)一組開發(fā)人員從事同一個(gè)項(xiàng)目時(shí),CVS 將他們彼此隔離開來。每個(gè)開發(fā)人員都在他/她自己的目錄中獨(dú)立工作,然后使用 CVS 資源庫(不時(shí)地)合并工作結(jié)果。

    Eclipse 擁有與 Eclipse 平臺(tái) IDE 緊密集成的內(nèi)置 CVS 客戶機(jī),它是作為一個(gè)單獨(dú)透視圖(CVS Repository Exploring 透視圖)而實(shí)現(xiàn)的,用于與 CVS 的交互。用于 CVS 的通用 Eclipse 設(shè)置(General Eclipse settings for CVS)位于 Window -> Preferences window -> Team 下。在切換到 CVS Repository Exploring 透視圖之后,就可以使用所有 CVS 操作了(轉(zhuǎn)至 Window -> Open Perspective -> Other -> CVS Repository Exploring 菜單 — 請參閱圖 1圖 2)。

    圖 1. 切換到 CVS Repository Exploring 透視圖
    CVS 資源庫

    首先設(shè)置資源庫的位置,它將定義用于選定 CVS 服務(wù)器/資源庫的連接參數(shù)。請確保使用 SSH 隧道(extssh)。

    圖 2. 瀏覽 CVS Repository Exploring 透視圖中的 CVS 資源庫
    瀏覽 CVS 資源庫

    Eclipse/CVS 的源代碼工作流
    CVS 團(tuán)隊(duì)協(xié)作模型中,團(tuán)隊(duì)成員彼此獨(dú)立地在他們各自的工作臺(tái)上完成自己的所有工作。最后,他們希望共享其工作。他們通過 CVS 資源庫實(shí)現(xiàn)這一點(diǎn)。CVS 使用分支(branch)模型來支持彼此獨(dú)立而又高度相互依賴的多個(gè)工作流程(course of work)。這些分支是開發(fā)團(tuán)隊(duì)用來共享和集成正在進(jìn)行中的工作的地方。可以認(rèn)為分支是一個(gè)共享的工作臺(tái),當(dāng)團(tuán)隊(duì)成員對源代碼進(jìn)行更改時(shí)就更新這個(gè)工作臺(tái)。這個(gè)模型允許從事 CVS 團(tuán)隊(duì)項(xiàng)目的每個(gè)開發(fā)人員在進(jìn)行更改時(shí)與其他成員共享其工作,以及在項(xiàng)目進(jìn)展期間訪問其他成員的工作。

    一個(gè)稱為 HEAD 的特殊分支用來表示資源庫中的主要工作流程(HEAD 通常被稱為主干)。當(dāng)團(tuán)隊(duì)成員將資源提交給該分支時(shí),會(huì)影響這些相關(guān)性。確保相關(guān)性的完整性是很重要的,因?yàn)樵摲种П硎玖水?dāng)前項(xiàng)目的狀態(tài)。當(dāng)然,任何時(shí)候,團(tuán)隊(duì)成員都可以使用該分支的內(nèi)容作為新工作的基礎(chǔ)。

    那些規(guī)則不僅適用于 CVS:無論使用哪種版本控制軟件,團(tuán)隊(duì)項(xiàng)目中都有一些用于源代碼管理的常見步驟。下面是一個(gè)使用 Eclipse 內(nèi)置的 CVS 支持的示例工作流:

    1. 啟動(dòng)新的團(tuán)隊(duì)項(xiàng)目
    每個(gè)新的空 Eclipse 項(xiàng)目都可以通過 CVS(或受支持的任何其它源代碼管理系統(tǒng))進(jìn)行共享。開發(fā)人員也可以通過將其現(xiàn)有的代碼遷移到資源庫來共享它。要進(jìn)行共享,單擊項(xiàng)目主文件夾,在顯示的上下文菜單中使用 Team -> Share Project 選項(xiàng),如圖 3 所示。

    圖 3. 使用 CVS 資源庫共享本地項(xiàng)目
    共享項(xiàng)目

    另一個(gè)選項(xiàng)是通過從選定的 CVS 資源庫分支導(dǎo)入代碼來創(chuàng)建新的工作臺(tái)項(xiàng)目。只要選擇適當(dāng)分支(或 HEAD),然后選擇從 CVS Repository Exploring 透視圖中的上下文菜單中選擇“Checkout As Project”選項(xiàng),如圖 4 所示。

    圖 4. 從現(xiàn)有的 CVS 資源庫創(chuàng)建新項(xiàng)目
    新建項(xiàng)目

    2. 使用代碼并進(jìn)行更改
    開發(fā)人員通過 Eclipse 工作臺(tái)在本地使用代碼,包括的工作有創(chuàng)建新資源、修改現(xiàn)有資源、編寫注釋,并在他們使用后在本地保存這些內(nèi)容。

    3. 使本地更改與 CVS 資源庫同步
    如果一個(gè)項(xiàng)目開發(fā)人員準(zhǔn)備提交他/她的工作,那么首先要執(zhí)行更新操作。這會(huì)針對引入的更改核對資源庫,并將這些更改添加到該開發(fā)人員的本地工作臺(tái)。這樣確保了開發(fā)人員知道這些更改可能會(huì)影響他/她將要提交的工作的完整性。使用項(xiàng)目上下文菜單中的 Compare With... 選項(xiàng)將本地版本與資源庫中存儲(chǔ)的代碼進(jìn)行比較(請參閱圖 5)。

    圖 5. 比較本地版本與資源庫中的版本
    本地版本

    下一步是解決最后出現(xiàn)的任何沖突,并設(shè)法再次編譯代碼。如果一切正常,那么從項(xiàng)目上下文菜單使用 Team -> Commit... 選項(xiàng)執(zhí)行提交操作,如圖 6 所示。這會(huì)使所有更改都集成到資源庫中。

    圖 6. 將更改提交到遠(yuǎn)程資源庫
    提交更改

    4. 管理資源庫
    CVS 允許開發(fā)人員將更改隔離在開發(fā)的某些獨(dú)立路徑之內(nèi),這些路徑稱為分支。當(dāng)一個(gè)開發(fā)人員更改某個(gè)分支上的文件時(shí),這種更改不會(huì)出現(xiàn)在主干或其它分支上。那些分支被命名為子版本(subversion)代碼分叉(code fork)。稍后,由合并操作將更改從一個(gè)分支遷移到另一個(gè)分支(或主干)。然后提交這些修訂。這樣就有效地將更改復(fù)制到了另一個(gè)分支上。使用項(xiàng)目上下文菜單的 Team -> Branch... 選項(xiàng),Eclipse 使開發(fā)分支之間的遷移變得容易。

    當(dāng)然,當(dāng)開發(fā)團(tuán)隊(duì)維護(hù)大型資源庫時(shí),有必要控制項(xiàng)目內(nèi)的提交和合并操作。Eclipse/CVS 集成提供了一種特殊的視圖:CVS Repository History(請參閱圖 7)。它給出了關(guān)于團(tuán)隊(duì)成員在資源庫中所執(zhí)行更改的快速預(yù)覽。

    圖 7. 在 CVS Resource History 窗口中查看帶注釋的修訂歷史記錄
    修訂歷史記錄

    Eclipse 平臺(tái)提供了幾個(gè)支持代碼管理的實(shí)用程序。最有用的是補(bǔ)丁功能。它將出自兩個(gè)來源(譬如本地工作臺(tái)和資源庫)的代碼進(jìn)行比較,然后創(chuàng)建一個(gè)包含代碼差異的類似 UNIX 的補(bǔ)丁文件(請參閱圖 8)。可以將該文件發(fā)送給開發(fā)人員以將源代碼升級(jí)到最新版本。

    圖 8. 創(chuàng)建用于源代碼分發(fā)的補(bǔ)丁
    源代碼分發(fā)

    5. 斷開項(xiàng)目與 CVS 的連接
    當(dāng)項(xiàng)目開發(fā)已經(jīng)結(jié)束,并且團(tuán)隊(duì)希望凍結(jié)源代碼時(shí),可以從 HEAD 資源庫刪除該項(xiàng)目的最終版本。斷開項(xiàng)目與 CVS 的連接將在該項(xiàng)目及其資源上禁用資源庫操作,并刪除與該項(xiàng)目相關(guān)聯(lián)的 CVS 信息(這一操作是可選的)。

    可以通過項(xiàng)目上下文菜單中的 Team -> Disconnect 選項(xiàng)執(zhí)行斷開連接操作。通過選擇這個(gè)選項(xiàng),會(huì)打開 Confirm Disconnect from CVS 對話框。在將該項(xiàng)目與資源庫的連接斷開之后,該團(tuán)隊(duì)必須確定如何處理 CVS 信息。第一個(gè)選項(xiàng)是“Delete the CVS meta information”;它將禁用 CVS 團(tuán)隊(duì)菜單操作并從文件系統(tǒng)中刪除CVS 文件夾及其內(nèi)容。第二個(gè)選項(xiàng)是“Do not delete the CVS meta information”;它將禁用 CVS 團(tuán)隊(duì)菜單操作,但保留 CVS 元信息。

    對第三方代碼管理應(yīng)用程序的支持
    CVS 有幾個(gè)重要的限制:它不能確定單個(gè)文件或整個(gè)文件集范圍內(nèi)同時(shí)進(jìn)行的更改,它也不能檢測文件之間的邏輯沖突。其沖突概念純粹是文本意義上的,當(dāng)對于同一基本文件的兩個(gè)更改時(shí)間上非常非常接近,從而使合并命令受到干擾時(shí),就會(huì)發(fā)生沖突。CVS 也不能提供任何類似于消息傳遞這樣的交互式協(xié)作工具。幸運(yùn)的是,CVS 并不是 Eclipse 平臺(tái)所支持的唯一的源代碼管理軟件。開發(fā)人員可以通過插件擴(kuò)展 Eclipse 平臺(tái)的功能,而且目前(到 2003 年 3 月 4 日為止)已有 16 個(gè)可用于團(tuán)隊(duì)開發(fā)軟件的插件。所有插件都是由 Eclipse 社區(qū)或商業(yè)軟件供應(yīng)商創(chuàng)建的。這些插件中的大多數(shù)添加了對第三方、商業(yè)源代碼管理系統(tǒng)的支持。最有價(jià)值的插件是那些支持流行的企業(yè)代碼管理系統(tǒng)(如 Merant PVCS 和 Rational ClearCase)的插件。例如,CVS-SSH2 插件允許通過 SSH2 會(huì)話訪問 CVS,而 Microsoft Visual SourceSafe(VSS)團(tuán)隊(duì)提供程序插件添加了對 MS VSS 產(chǎn)品的支持(也可以在諸如 Linux 這樣的非 Windows 平臺(tái)上使用)。

    但是,我本人所偏愛的插件是 Koi(請參閱參考資料以獲取鏈接)。盡管它并非嚴(yán)格用于源代碼控制,但這個(gè)創(chuàng)新的工具給協(xié)作開發(fā)注入了許多新的活力。其當(dāng)前版本支持工作臺(tái)到工作臺(tái)的消息傳遞、共享標(biāo)記、沖突更改通知、共享日歷和事件通知。Koi 將 XML-RPC 用作其客戶機(jī)-服務(wù)器體系結(jié)構(gòu)中的通信模型。客戶機(jī)是與“協(xié)作服務(wù)器”通信的單個(gè) Eclipse 平臺(tái)實(shí)例,而協(xié)作服務(wù)器也是一個(gè) Eclipse 插件。Koi 使用以 JDBC 訪問的關(guān)系數(shù)據(jù)庫作為數(shù)據(jù)存儲(chǔ)。可在參考資料中找到指向完整的、經(jīng)過分類的 Eclipse 插件注冊表的鏈接。

    參考資料

     

    關(guān)于作者
    Pawel Leszek 是 Studio B 的一位作家,他是一位專長于 Linux/Win/Mac OS 系統(tǒng)體系結(jié)構(gòu)和管理的獨(dú)立軟件顧問和作家。他具有許多操作系統(tǒng)、編程語言和網(wǎng)絡(luò)協(xié)議方面的經(jīng)驗(yàn),尤其是 Lotus Domino 和 DB2 方面。Pawel 還在 LinuxWorld 上發(fā)表過一系列文章,他是 PC World 波蘭版的 Linux 專欄作家。Pawel 和他的妻子以及可愛的小女兒住在華沙。歡迎提問并提出意見;您可以通過 pawel.leszek@ipgate.pl 與 Pawel 聯(lián)系。
    主站蜘蛛池模板: 亚洲真人日本在线| 国产成人精品免费视频大全| 亚洲AV午夜成人片| 免费在线观看日韩| 在线看片无码永久免费视频| 叮咚影视在线观看免费完整版| 男男gvh肉在线观看免费| 亚洲伦理中文字幕| 亚洲高清不卡视频| 久久精品国产亚洲av成人| 亚洲精品国产日韩无码AV永久免费网 | 99re8这里有精品热视频免费| 在线观看亚洲网站| 亚洲精品天堂在线观看| 亚洲αv在线精品糸列| 国产精品视_精品国产免费| 亚洲一区二区三区免费在线观看| 一级中文字幕乱码免费| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲综合综合在线| 亚洲AV无码一区二区乱孑伦AS| 亚洲女同成人AⅤ人片在线观看| 女性无套免费网站在线看| **俄罗斯毛片免费| 国产永久免费高清在线| jizz18免费视频| 一级毛片正片免费视频手机看 | 亚洲视频在线不卡| 亚洲日韩中文无码久久| 免费一级肉体全黄毛片| 毛片在线免费视频| 曰批视频免费30分钟成人| 99视频免费观看| 免费黄色电影在线观看| 免费播放在线日本感人片| 成人免费av一区二区三区| 丰满少妇作爱视频免费观看| 一级女性全黄久久生活片免费 | 色www永久免费视频| 日韩成人在线免费视频| 成人免费无码大片A毛片抽搐|