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

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

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

    Thinking in XiaoQiang
    世人皆有悲哀,只有你不明白
    posts - 56,comments - 150,trackbacks - 0
    轉(zhuǎn)載:http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-ecshare/index.shtml

    本文概述了 Eclipse 平臺如何支持軟件項目中的源代碼版本控制。首先,我們將簡要討論一下團(tuán)隊代碼開發(fā)的思想,然后研究 Eclipse 如何使用 CVS 代碼資源庫。我們還將研究一些源代碼管理軟件工具,可以通過 Eclipse 插件擴(kuò)展來支持這些工具。

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

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

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

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

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

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

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

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

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

    Eclipse 擁有與 Eclipse 平臺 IDE 緊密集成的內(nèi)置 CVS 客戶機(jī),它是作為一個單獨透視圖(CVS Repository Exploring 透視圖)而實現(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)隊協(xié)作模型中,團(tuán)隊成員彼此獨立地在他們各自的工作臺上完成自己的所有工作。最后,他們希望共享其工作。他們通過 CVS 資源庫實現(xiàn)這一點。CVS 使用分支(branch)模型來支持彼此獨立而又高度相互依賴的多個工作流程(course of work)。這些分支是開發(fā)團(tuán)隊用來共享和集成正在進(jìn)行中的工作的地方。可以認(rèn)為分支是一個共享的工作臺,當(dāng)團(tuán)隊成員對源代碼進(jìn)行更改時就更新這個工作臺。這個模型允許從事 CVS 團(tuán)隊項目的每個開發(fā)人員在進(jìn)行更改時與其他成員共享其工作,以及在項目進(jìn)展期間訪問其他成員的工作。

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

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

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

    圖 3. 使用 CVS 資源庫共享本地項目
    共享項目

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

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

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

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

     

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

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

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

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

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

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

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

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

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

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

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

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

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

    參考資料

    關(guān)于作者
    Pawel Leszek 是 Studio B 的一位作家,他是一位專長于 Linux/Win/Mac OS 系統(tǒng)體系結(jié)構(gòu)和管理的獨立軟件顧問和作家。他具有許多操作系統(tǒng)、編程語言和網(wǎng)絡(luò)協(xié)議方面的經(jīng)驗,尤其是 Lotus Domino 和 DB2 方面。Pawel 還在 LinuxWorld 上發(fā)表過一系列文章,他是 PC World 波蘭版的 Linux 專欄作家。Pawel 和他的妻子以及可愛的小女兒住在華沙。歡迎提問并提出意見;您可以通過 pawel.leszek@ipgate.pl 與 Pawel 聯(lián)系。

    posted on 2005-10-13 09:26 小強(qiáng) 閱讀(1340) 評論(0)  編輯  收藏 所屬分類: eclipse plugin

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕a∨在线乱码免费看| 精品久久8x国产免费观看| 亚洲日韩av无码| 亚洲免费一级视频| 色窝窝亚洲av网| 亚洲AV电影院在线观看| 大学生美女毛片免费视频| a级成人毛片免费视频高清| 亚洲一卡二卡三卡| JLZZJLZZ亚洲乱熟无码| 亚洲精品免费在线视频| 亚洲av永久中文无码精品综合| 国产AV无码专区亚洲AWWW| 1000部拍拍拍18勿入免费凤凰福利| 久久亚洲精品无码gv| 亚洲国产老鸭窝一区二区三区 | 国内精品久久久久影院亚洲| 久久久久亚洲av成人无码电影 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产做床爱无遮挡免费视频| 两个人看的www免费| 亚洲另类无码一区二区三区| 亚洲AV一宅男色影视| 国产精品二区三区免费播放心 | 免费人成又黄又爽的视频在线电影| 亚洲视频在线观看免费视频| 亚洲精品无码专区2| 最新欧洲大片免费在线 | A片在线免费观看| 国产精品亚洲一区二区在线观看 | 国产精品免费αv视频| 亚洲色大成网站www久久九| 久久久亚洲精品视频| 亚洲高清无码综合性爱视频| 999在线视频精品免费播放观看| 中文字幕成人免费高清在线视频| 久久久久久亚洲精品无码| 亚洲天堂一区二区三区四区| 亚洲AV综合色区无码另类小说| 亚洲第一网站男人都懂| 破了亲妺妺的处免费视频国产|