【问题标题】:Best Practices for Project Feature Sub-Modules with Mercurial and Eclipse?Mercurial 和 Eclipse 项目功能子模块的最佳实践?
【发布时间】:2011-02-20 13:42:07
【问题描述】:

我有几个针对不同客户的 ANT 项目;我的项目目录结构如下所示:

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

...所有内容都被组合并缩小(有点像编译)成_master-proj/js目录中的不同Javascript文件名;在最后一步中,_master-proj 被编译以部署到服务器。

现在关于我想用 hg 设置它的方式,我想做的是将主项目及其子项目从他们自己的基线存储库克隆到客户的工作副本,以便可以将模块添加(使用 hg)到特定客户的工作副本中。

此外,当我对一位客户的工作副本中的错误进行一些更改/修复时,我希望能够选择性地将更改/错误修复推送回主项目/子项目的基线存储库,为了最终将更改/修复拉到其他客户的工作副本中,这些副本可能包含需要修复的相同错误。

通过这种方式,我将能够在不同的客户端上使用相同的错误修复。

但是...我不确定使用 hg 和 Eclipse 执行此操作的最佳方法。

read here,您可以使用 hg 的 Convert Extension 使用 --filemap 选项将子目录拆分为单独的项目。

但是,我仍然有点困惑,是否使用 Convert Extension 会更好,或者是否将每个模块都存放在自己的存储库中并将它们签出到一个单独的存储库中会更好每个客户的工作区。

【问题讨论】:

  • 我在这里试图解释/执行的动词是否有一个简短的名称?
  • 我认为我对此感到困惑的另一个地方是我如何才能从他们各自的存储库中签出我需要的正确的特定模块,而不将整个东西包含在一个大存储库中?跨度>
  • 我想我可能在这里找到了答案:mercurial.selenic.com/wiki/subrepos

标签: eclipse ant mercurial multi-module


【解决方案1】:

是的,看起来subrepos 是您正在寻找的东西,但我认为这可能是错误问题的正确答案,我强烈怀疑您会遇到类似的issues that occur when using svn:externals

相反,我建议您将合并和缩小的 JS 文件“发布”到 artefact repository,并使用诸如 Ivy 之类的依赖项管理器将特定版本的人工制品拉入您的主项目。这种方法让您可以更好地控制主项目使用的子项目版本。

如果您需要对特定客户的子项目进行错误修复,您只需在该子项目的主线上进行修复,发布新版本(最好通过automated build pipeline)并更新它们主项目使用新版本。哦,你想在发布之前用他们的主项目测试新版本吗?在这种情况下,在您推送修复之前,在本地合并和缩小您的子项目,将其发布到 local repository 并让客户的主项目选择该版本进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2010-10-07
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多