2011-04-05 8 views
2

このwebapp製品は複数の顧客に配備されており、svnからmercurialに切り替えることを考えています。 svnでは、トランクをプロジェクトのコアとみなし、ブランチは顧客ごとに設定します。Mercurial:マルチカスタマープロジェクト用のリポジトリレイアウト

今、私は最高のレポのレイアウトが水銀であるかもしれないと思っています。

プロジェクトは、基本的に3つのメインフォルダ:html,cssjsから作成されます。

/htmlの内容は、お客様にも同じですが、/css & /jsでカスタマイズされています。
現在のところ、これらのカスタマイズはskin.cssなどの別々のファイルで行われているため、実際の用途に合わせてカスタマイズ/コアの変更をコア/共通ファイルに明確に伝えることができます。

SVNを使用すると、カスタマーブランチからの変更を部分的にトランクにコミットすることができるため、顧客プロジェクトでグローバルな作業を修正できます。私が理解しているように、今は水銀で部分コミットがサポートされていません。

水銀でこの状況に最も近づくにはどうすればよいですか? 中央コアレポ(リリースブランチを持つ可能性があります)を1つ持ち、カスタマープロジェクトを別個の(リモート)レポジトリとしてクローンする必要がありますか? すべてのコアを顧客に提供する方が良いですか?&カスタマーブランチ - 内部に1つのレポがありますか?

ありがとうございました!

答えて

4

プロジェクトを2つのrepos:core(html)とcustomer(css、js)に分割します。 「コア」は理解しやすいです。 「顧客」については、スタイルのジェネリックまたはフォールバックのセットから始めます。次に、各顧客の汎用スタイルからクローンを作成します。ある顧客のビルドを行うには、コアとその顧客のクローンの両方を引き出す必要があります。このようにして、異なる顧客は隔離されていますが、依然としてジェネリックスタイルを通じて互いに知り合います。したがって、すべての顧客を横断して変更したいスタイルがあれば、一般的なスタイルにコミットして、各顧客が引き抜くようにするだけです。私は違う顧客をまったく違うレポにするつもりはない。

1つの顧客に対してクローンを作成するたびに、1つの単一レポを持つ問題は、無関係な部分(html)を持ち歩くことになります。予想外の変更はhtmlに簡単に流出する可能性があります。同じ理由で、あなたのプロジェクトはおそらくSVNでも2つのプロジェクトに分割されているはずです。

+0

core&customerからプルと言うと、per-customer-reposのサブリポジトリとしてセットアップすることを意味しますか? – Carsten

+0

@Carsten、顧客Aのビルドを行うときはいつも、コア(html)とAのスタイルの2つの部分が必要です。それらを設定する方法はあなた次第です。私はあなたが「顧客ごとのサブリポジトリ」という意味を正確には知らないのです –

+0

申し訳ありませんが、私は少し不明でした。 私があなたに喜んでいただければ、「顧客A」はまた、例えば、「顧客」のブランチであるかもしれません。 ここで、コアレポをどのように扱いますか? 「コア」をチェックする顧客リポジトリにMecurialサブポ? または、コアファイルを作業コピーに入れるだけですか? – Carsten

関連する問題