4

TFS 2010 を使用していますが、依存関係/ブランチ管理で非常に厄介な問題が発生しています。

一見すると、私たちの問題は非常に一般的です。AppServerWebClientおよびがありWinClientます。との両方WebClientが にWinClient依存しAppServerます。さらに 2 つの制限があります。

  1. 使用されている依存関係の特定のバージョンを含めることを好みます
  2. バイナリではなくソース コードを含めることをお勧めします。AppServerこれは、WinClient.

次のフォルダー構造を選択します。

\
|-AppServer (1)
|-WebClient
    |-Dependencies
        |-AppServer (2)
    |-Sources
|-WinClient
    |-Dependencies
        |-AppServer (3)
    |-Sources

AppServers(2)および(3)は、 のブランチ (第 1 級ブランチとして) ですAppServer (1)。すべてうまく機能し、私たちの開発シナリオと一致しています。

さて、トラブル発生。に「ブランチごとのリリース」パターンを実装するとします。これは、階層WebClient全体を別の場所に分岐することを意味します。WebClientTFS2010ではネストされたファースト クラス ブランチが許可されていないため、これを行うことはできません。

課題に追加するために、ブランチ階層 ( のみWebClient、および他にいくつかの依存プロジェクトと依存プロジェクトがある) を次のようにすることを想定しています。

WebClient
    |-Client1
    |    |-feature-1
    |    |-feature-2
    |    |-v1 Release
    |    |   |-v1 hotfix1
    |    |   |-v1 hotfix2
    |    |-v2 Release
    |        |-v1 hotfix1
    |        |-v1 hotfix2
    |
    |-Client2
         |-feature-1
         |-feature-2
         |-v1 Release
         |   |-v1 hotfix1
         |   |-v1 hotfix2
         |-v2 Release
             |-v1 hotfix1
             |-v1 hotfix2

私たちの選択肢は何ですか?私はいくつか考えることができます:

  1. ファーストクラスのブランチをフォルダーに変換します。これにより、ブランチをネストできますが、追跡と視覚化が失われます。これは好ましくありません。
  2. 依存関係に関してコードを何らかの方法で再構築できます。しかし、しばらく考えてみましたが、まだ答えがわかりません。
  3. コードの依存関係からバイナリの依存関係に切り替えることはできますが、それでは開発が遅くなります。

私が見逃している解決策はありますか?

4

1 に答える 1

1

いくつかの考え:

1) AppServer ブランチを WebClient から分離してネストしないようにし、TFS のワークスペース マッピング機能を使用して、AppServer をクライアント ブランチにブランチすることで定義したようなものをエミュレートすることができます。これにより、開発者は必要な AppServer ブランチを選択し、それをローカル ファイル構造の適切な場所にネストして、作業を容易にすることができます。

2)バイナリを持つことで開発が遅くなるというあなたの声明は、私がさらに調査し、測定と定量化を試みるもののように思えます. AppServer とクライアントの間に明確な断絶がある場合、それらの間に依存関係はなく、代わりに svcutil またはその他のツールによって生成される可能性のあるプロキシ コードが予想れます。これが事実で、あるプロセスで AppServer をホストし、別のプロセスでクライアントから通信している場合、最初から元の構造を実装する必要がある理由がわかりません。不必要なカップリングのようです。なぜそれが行われたのか、もっと詳しく知りたいです。

于 2012-10-02T03:38:59.173 に答える