2

このWebアプリ製品は複数の顧客に展開されており、svnからMercurialへの切り替えを検討しています。svnでは、トランクをプロジェクトの「コア」と見なし、ブランチは顧客ごとに設定されます。

今、私は最高のレポレイアウトがMercurialで何であるか疑問に思います。

プロジェクトが基本的に3つのメインフォルダで構成されているとしましょう:html、、。 cssjs

内容はお客様間で同じですが、 &/htmlにはカスタマイズがあります。 現在、これらのカスタマイズは、などの個別のファイルに存在するため、修正/変更からコア/共通ファイルまで、実際の目的に応じたカスタマイズを明確に伝えることができます。/css/js
skin.css

次に、SVNを使用すると、顧客のブランチからトランクに変更を部分的にコミットできるため、顧客のプロジェクトに取り組んでいる間にグローバルなものを修正できます。私が理解しているように、部分的なコミットは現在、Mercurialではサポートされていません。

では、この状況に水銀でどのようにアプローチするのが最善でしょうか?1つの中央コアリポジトリ(おそらくリリースブランチを含む)を用意し、顧客プロジェクトを個別の(リモート)リポジトリとして複製する必要がありますか?コアブランチとカスタマーブランチのすべてを1つのリポジトリ内に配置する方がよいでしょうか。

ポインタをありがとう!

4

1 に答える 1

4

プロジェクトをコア(html)と顧客(css、js)の2つのリポジトリに分割します。「コア」はわかりやすいです。「顧客」の場合、私は一般的なスタイルまたはフォールバックスタイルのセットから始めます。次に、各顧客の一般的なスタイルからクローンを作成します。1人の顧客のビルドを作成するには、コアとその顧客のクローンの両方からプルする必要があります。このようにして、さまざまな顧客が孤立しますが、一般的なスタイルを通じてお互いを知っています。したがって、すべての顧客にまたがって変更したいスタイルがある場合は、一般的なスタイルにコミットし、各顧客のクローンをプルさせる必要があります。私は、異なる顧客をまったく異なるリポジトリにすることはしません。

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

于 2011-04-05T15:59:00.367 に答える