2010-05-17 44 views
7

我有幾個不同的客戶ANT項目;目錄結構我有我的項目是這樣的:使用Mercurial和Eclipse的項目特徵子模塊的最佳實踐?

L___standard_workspace 
    L___.hg 
    L___validation_commons-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___old_stuff 
    | L___src 
    | | L___css 
    | | L___js 
    | |  L___validation_commons 
    | L___src-test 
    |  L___js 
    L___v_file_attachment-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___src 
    | | L___css 
    | | L___js 
    | L___src-test 
    |  L___js 
    L___z_business_logic-sub-proj <- JS Library/Module 
    | L___java 
    | | L___jar 
    | L___src 
    |  L___css 
    |  L___js 
    L____master-proj    <- Master web-deployment module where js libraries are compiled to. 
     L___docs 
     L___java 
     | L___jar 
     | L___src 
     |  L___AntTasks 
     |   L___build 
     |   | L___classes 
     |   |  L___com 
     |   |   L___company 
     |   L___dist 
     |   L___nbproject 
     |   | L___private 
     |   L___src 
     |    L___com 
     |     L___company 
     L___remoteConfig 
     L___src 
     | L___css 
     | | L___blueprint 
     | | | L___plugins 
     | | | | L___buttons 
     | | | | | L___icons 
     | | | | L___fancy-type 
     | | | | L___link-icons 
     | | | | | L___icons 
     | | | | L___rtl 
     | | | L___src 
     | | L___jsmvc 
     | L___img 
     | | L___background-shadows 
     | | L___banners 
     | | L___menu 
     | L___js 
     | | L___approve 
     | | L___cart 
     | | L___confirm 
     | | L___history 
     | | L___jsmvc 
     | | L___mixed 
     | | L___office 
     | L___stylesheets 
     | L___swf 
     L___src-standard 

內的工作拷貝模塊編譯子項目成被放置在主項目的JavaScript的目錄中的一個JavaScript文件。

例如,目錄:

  • validation_commons-sub-proj
  • v_file_attachment-sub-proj
  • z_business_logic-sub-proj

...所有組合和精縮(有點像編譯)成不同Javascript文件名在_master-proj/js目錄中;並在最後一步編譯_master-proj以部署到服務器。

現在關於我想用hg進行設置的方式,我希望能夠做的就是將主項目及其子項目從他們自己的基線存儲庫克隆到客戶的工作副本,以便可以將模塊添加(使用hg)到特定客戶的工作副本。

此外,當我在一個客戶的工作副本中修改/修正錯誤時,我希望能夠選擇性地將修改/錯誤修復推回到主項目/子項目的基線存儲庫,目的是最終將更改/修復引入其他客戶的工作副本,這些副本可能包含需要修復的相同錯誤。

通過這種方式,我將能夠在不同的客戶端上使用相同的錯誤修復。

但是......我不確定使用hg和Eclipse來做到這一點的最佳方式。

我您可以使用hg的Convert Extension使用--filemap選項將子目錄拆分爲單獨的項目。

但是,我仍然有點困惑,以至於如果最好使用Convert Extension或者將每個模塊放在自己的存儲庫中並將它們檢出到單個工作區中爲每個客戶。

+0

是否有一個簡短的名字,我試圖解釋/在這裏執行的動詞? – leeand00 2010-05-17 19:07:31

+0

我認爲我對此感到困惑的另一個地方是如何才能從他們各自的存儲庫檢出我需要的正確特定模塊,而不必將整個事件包含在一個大型存儲庫中? – leeand00 2010-05-17 19:17:49

+1

我想我可能在這裏找到答案: http://mercurial.selenic.com/wiki/subrepos – leeand00 2010-05-17 20:02:10

回答

3

是的,它看起來像subrepos是你在找什麼,但是我想,也許這是一個錯誤的問題的正確答案,我強烈懷疑,你會碰到類似issues that occur when using svn:externals

相反,我會建議您將組合和縮小的JS文件「發佈」到artefact repository,並使用依賴管理器(例如Ivy)將您的工件的特定版本拖放到您的主項目中。這種方法使您可以更好地控制主項目使用的子項目版本。

如果您需要對特定客戶端的子項目進行錯誤修復,則可以在該子項目的主線上進行修復,發佈新版本(理想情況下通過automated build pipeline)並更新其主服務器項目使用新版本。哦,你想在發佈之前用他們的主項目測試新版本嗎?在這種情況下,在推動修復之前,結合並在本地縮小您的子項目,將其發佈到local repository,並讓客戶的主項目爲您的測試選擇該版本。