2009-07-06 10 views
2

私たちは約5か所で動作する大規模なアプリケーションを持っています。これらの場所のいずれも、同じバージョンのアプリケーションを実行していません。これにより、パッチ適用や更新が非常に複雑になります。フォークされたアプリケーションをどのようにサポートし、開発を続ける必要がありますか?

この例に従うようにしてください。私は「アプリケーションA」と呼んでいるアプリケーションを呼び出します。ここでは、アプリケーションBをこれらの場所の1つに展開し、アプリケーションAを実装する必要があります.Bの要件を受け入れるようにAを変更する必要があります。しかし、私たちの開発版であるA(最終的にはそれぞれの場所が持つバージョン)は、Bもサポートしなければなりません。つまり、Bを必要とするサイトで実行されているソフトウェアの状態にロールバックし、Aの開発バージョンにこれらの変更を加えなければならないことを意味します。これは、4つの他の場所がBサポートなしのAバージョンを実装していることを意味します。

バージョン管理を制御するのが欲しいところが分かります。サイト2〜5をサポートしたい場合は、ソースの開発版を使用することはできません。そのサイトの特定のバージョンにロールバックする必要があります。これを行う最善の方法は何ですか? Visual Studio 2008とTeam Foundation Serverを使用していることに注意してください。

+2

古典的な "Doctor、これを行う!"状況。 –

答えて

4

私がお勧めする最初のことは、あなたのアプリをすべてリファクタリングして、すべて同じバージョンのコア製品を使用することです。

特定の機能を論理的に独自のモジュールに分けて、その機能をアダプタタイプのパターンでアクセスしてみてください。

+1

用語のおかげで、ジョン。正確に私が探していたもの - 「フォークされたアプリケーション」と「アダプタパターン」。 – Daniel

1

ジョンは、重要な第一歩を指摘します。あなたのコードベースが内部的に安定するまで良いことは起こりません。

しかし、アプリケーションをよく定義されたインターフェイスで再利用可能なコンポーネントに分割しても、多くの/すべてのコンポーネントの複数のバージョン(「フォーク」)を維持し、それらのリリースを並行して開発する必要があります。それでは分岐が起こるのです。

新しいTFS Branching Guidance紙をカバーでカバーすることを強くお勧めします。以前のリビジョンについては非常に批判的でしたが、ドキュメンテーションチームは実際にここでのオファリングを改善しました。 (TFSがより広範な採用を見せていることによる追加的なフィードバックのおかげだが...しかし、同等の部分では、MSの市場参入をはるかに遥かに超えるSDLC基準への最終的な配慮)

+0

「コードベースが内部的に安定するまでは何もできません。」 - コメントありがとうございました。でも、それは私の主張ではありません。私が意味するのは、いくつかのタイプのアドインモデルを通じて、コア機能のフォークを解除し、追加の場所固有の機能を管理することです。だから、みんな同じバージョンのアプリケーションXを持っています。場所yにはアドインがあり、場所zにはzアドインがあります。 KWIM? –

+0

あなたは100%の分離を達成することができれば、素晴らしいです。それは必ずしも実現可能ではありません。それは実現可能ですが、ずっと遅くまで別のloc固有のforkが必要な場所を知ることはできません。分岐に慣れ親しんだことで、X + 1で作業している間にバージョンXを維持する方法など、あなたがどのようにモジュール化しているかに直交する他の多くの並列開発も可能になります。 –

関連する問題