7

我有几个针对不同客户的 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 执行此操作的最佳方法。

在这里读到,您可以使用 hg 的Convert Extension选项将子目录拆分为单独的项目--filemap

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

4

1 回答 1

3

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

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

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

于 2011-05-06T04:20:22.703 回答