2011-06-30 4 views
1

TFS作業ブランチの外部依存関係を処理するための確立された "ベストプラクティス"はありますか?つまり、一般的なサードパーティライブラリ(この場合はlog4netを扱っています)を含むTFSのプロジェクトがあります。これは必要に応じて他のプロジェクトに分かれています。今私たちは別の作業ブランチ上で重要な変更を行っています。これには、新しいバージョンのコンポーネントが必要です。それは基本的に次のようになります。仕事のTFS 2010:作業ブランチで外部 "分岐"依存関係を処理する方法

$/ThirdParty 
    /bin 
    /log4net 

$/Product 
    /Main 
    /thirdparty 
     /lognet  <-- $/ThirdParty/bin/log4net 
    /Working1  <-- $/Product/Main 
    /thirdparty 
     /log4net  <-- $/Product/Main/lognet <-- $/ThirdParty/bin/log4net 

パートは、.NET 4クライアントプロファイルに対してlog4netのを再構築し、新しいバージョンに持ち込む必要です。通常、サードパーティのコンポーネントをアップグレードすると、適切なフォルダにある$/Thirdpartyにチェックインされ、個々のプロジェクトは最新のバイナリを自由にマージするかどうかを自由に選択できます。私が判断することができます持っているよう

は限り、$/ThirdParty/bin/log4netから最新のチェンジセットを得るために、私は、$/Product/MainにそのマージTFSにマージを確認し、その後、$/Product/Working1にそのブランチをマージする必要があります。それはまさに私が避けたいものです。なぜなら私はメインブランチを混乱させたくないからです。

だから、私は2つの質問を推測:

  1. は、このマージをメインブランチに何かをチェックしなくても動作するように取得する方法はありますか?

  2. これらの種類の依存関係をTFSに入れたままで扱う方が全体的な戦略が優れていますか? (私はTFSがバイナリの "意​​味"ではないことを知っていますが、私たちは簡単な複数バージョンと履歴追跡のために好きです)。

答えて

2

回答1:
はい。 ThirdPartyからWorking1への基本的なマージを行うことができます。
http://msdn.microsoft.com/en-us/library/bb668976.aspx

として2:ここでは、MSDNのページです メインプロジェクト2+あなたのサードパーティのバイナリの異なるバージョンを使用することができるなら、私は$ /サードパーティにサードパーティのバイナリの別のバージョンを保存するお勧めします第三者領域のファイルとメイン領域のファイルとの間に直接リンクを有しない。

+0

最終的には、作業ブランチのバージョンバンプもメインバンチで作成されますが、直ちに作成されることはありません。私がWorking1に直接的に根本的なマージを行った場合、そのチェンジセットは後でMainにマージされますか?そして、TFSのバイナリをこのように保つ理由は、すべてのプロジェクトを特定のlibsの同じバージョン(特にlog4netのような強力な名前のもの)に保つことです。私たちのコアライブラリはそれを参照しているので、他のものはすべて同じバージョンを使用する必要があります。さもなければ、実行時アセンブリバインディングリダイレクトを行う必要があります。 (そして今度はSNKが変わっても動作しません) –

+0

はい。 Working1への根拠のないマージを行った後、Working1からMainへ、またはThirdPartyからMainへマージすることができます(または両方を実行し、TFSはバイナリが同一であることを認識する必要があります)。リリースのすべてのアプリケーションで同じバージョンのサードパーティ製DLLを使用するよう強要していますが、サードパーティの強力なDLLをまだ扱っていないので、私の次のサードパーティ製DLLが強い名前をつけてください。 –

0

ThirdPartyプロジェクトを完全に排除してみませんか?サードパーティライブラリのすべてのバージョンをファイル共有に保ち、適切なものを各プロジェクトのツリーにチェックインするだけです。