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を使用して)特定の顧客の作業コピーに追加できるようにします。

ただし、1人の顧客の作業コピーに変更を加えたりバグを修正したりする場合は、オプションで変更/バグ修正をマスタープロジェクト/サブプロジェクトのベースラインリポジトリにプッシュして戻すことができます。最終的には、修正が必要な同じバグが含まれている可能性のある他の顧客の作業コピーに変更/修正をプルします。

このようにして、異なるクライアント間で同じバグ修正を利用できるようになります。

しかし...私はhgとEclipseを使用してこれを行うための最良の方法がわかりません。

ここで、hgのConvert Extensionを使用して、オプションを使用してサブディレクトリを別のプロジェクトに分割できることを読みました。--filemap

ただし、 Convert Extensionを使用する方がよいのか、それとも各モジュールを独自のリポジトリに格納して、クライアントごとに1つのワークスペースにチェックアウトする方がよいのかについてはまだ少し混乱しています。 。

4

1 に答える 1

3

はい、サブリポジトリがあなたが探しているもののように見えますが、おそらくそれは間違った質問に対する正しい答えだと思います。svn :externalsを使用するときに発生する同様の問題に遭遇することを強く疑っています

代わりに、結合および縮小されたJSファイルをアーティファクトリポジトリに「公開」し、 Ivyなどの依存関係マネージャーを使用してアーティファクトの特定のバージョンをマスタープロジェクトにプルすることをお勧めします。このアプローチにより、マスタープロジェクトが使用するサブプロジェクトのバージョンをはるかに細かく制御できます。

特定のクライアントのサブプロジェクトにバグ修正を行う必要がある場合は、そのサブプロジェクトのメインラインで修正を行い、新しいバージョンを公開し(理想的には自動ビルドパイプラインを介して)、マスタープロジェクトを次のように更新できます。新しいバージョンを使用してください。ああ、公開する前にマスタープロジェクトで新しいバージョンをテストしたいですか?その場合、修正をプッシュする前に、サブプロジェクトをローカルで結合して縮小し、ローカルリポジトリに公開して、クライアントのマスタープロジェクトにテスト用にそのバージョンを取得させます。

于 2011-05-06T04:20:22.703 に答える