2009-08-18 3 views
4

私はソースコントロールとしてTFSを使用してVisual Studio 2005で開発しています。私がしばらくの間ソリューションに取り組んでいないときは、常にソリューションエクスプローラで再帰的にGet Latestを実行します。TFSとVisual Studioの統合 - 最新版を入手すると必ずしも機能しないのですか?

ただし、これは常に機能するとは限りません。最新バージョンのファイルがないことが分かっている場合は、これを右クリック(ソリューションエクスプローラで)しても、特定のバージョンを取得し、「強制取得」ボックスにチェックを入れても機能しません。

TFSソースコントロールウィンドウを開く必要があるようで、問題のファイルを強制的に取得します。

はまた、ソリューションエクスプローラでは、多くの場合、ほとんどが次のファイルにアイコン「他の誰かにチェックアウト」があるが、私はソース管理にチェックインするとき、彼らは全くチェックアウトされていません!

これらの問題がVS2008(私は2008年の大きなプロジェクトではまだTFSを使用していません)で存続しているかどうか、および修正や回避策があるかどうかを知りたいだけです。

+0

"広く普及している"とはコメントできませんが、私はまったく同じ経験をしていることを確認できます。私はコードを他の誰かが数週間チェックアウトしているが、私はそれを扱っている唯一の人です。 –

+0

TFS 2012でVisual Studio 2008を使用しており、同じ問題が発生しています。ソリューションエクスプローラから最新バージョンを取得するときに、チェックアウトしていないファイルがローカルワークスペースで更新されないことがあります。 TFSソース管理ウィンドウの最新バージョンを入手するときには常に動作するようですが、5年間使用していたソリューションエクスプローラを使用しないようにn人のプロジェクトメンバーに教えるにはどうすればいいですか? – cmenke

答えて

4

1)私はソリューションエクスプローラから最新情報を取得しないでください。常に100%バグがなくても、コマンドラインやソース管理エクスプローラで実行するよりもはるかに遅く、信頼性が低くなります。

parse sln file 
foreach project in sln 
    TFS_GET makefile 
    parse makefile 
    enumerate sourcefiles[] 
    TFS_GET sourcefiles[] 
loop 

SCEは何の構文解析を必要とせず、1つの再帰的なWebサービスの呼び出しを発行します。SlnExpは、プロジェクト全体の構造をクロールし、非再帰呼び出し...擬似アルゴリズムを発行する必要があります。パフォーマンスの向上に加えて、これははるかに安全です。

(a)ビルド時の依存関係は、必ずしもプロジェクトのファイルリストの一部ではありません。実行可能ツール、サードパーティ製アセンブリ、および展開スクリプトはすべて共通の例です。 SCEはそれらをダウンロードしますが、SlnExpはダウンロードしません。

(b)スコープ特定のファイルへの呼び出しを取得しても、ファイルの名前変更や移動時に期待される結果が得られません。最高の場合、「古い」名前はディスクから削除されます。最悪の場合、何も起こらないようです。本当にサーバーと同期して移動/名前を変更するファイルのために(これはあなたが報告されたバグの原因である可能性があり)、古い&新しいパスが、両方の取得の範囲内でなければなりません。

2)SlnExpの「グリフ」には長年にわたり多くのバグ修正がありました。私はこの点でVS2008 SP1が完璧だと主張しませんが、間違いなく改善されています。

+0

しかし、ソリューションエクスプローラで最新バージョンの取得を無効にして、チーム内の誰もそれを使用しないようにするにはどうすればよいですか? OTherwiseそれ(TFSソースコントロールエクスプローラへの変更)は決して起こりません.....すべてのためにSLNエクスプローラを使用する歴史を持つ大きなプロジェクトではありません。 – cmenke

0

時々Get specific version両方のチェックボックスをオンにしてもは最新のファイルを取得しません。最も一般的に起こるのは、ファイルを変更した後で、最新バージョンを再度取得して変更を元に戻したい場合です。まあ...それはGet specific versionの目的ではなく、Undo pending changesが対象です。

もし疑問がある:

  • 取り消しあなたは
  • 「を最新の入手」を実行する前にファイル(複数可)にチェックイン保留行うファイルが期待されるバージョンと一致することを確認するために、後で比較
  • 後であなたのプロジェクト全体で再帰的比較を実行して何が違うのかを確認する
  • 保留中の変更ウィンドウを監視し、互換性のない保留中の変更を解決するために「サーバーバージョンを取得」をチェックする必要がある場合があります。

そして、この1の私の私はちょうど発見好きなこと:

  • チェックこのようなメッセージのためOutputウィンドウ:

    警告 - Rをリフレッシュすることができません:\ TFS-PROJECTS \ www.example .com \ ExampleMVC \ Example MVC \ Example MVC.csprojは、保留中の編集があるためです。

はいこの重要なメッセージが出力ウィンドウに表示されます。他の通知はありません! 保留中の変更はありません。また、明示的に要求したばかりのファイルが取得されなかったというダイアログメッセージは表示されません。そしてはい - Undo pending changesを実行してファイルを取得するだけで解決します。

+0

これはVisual Studioで意図された動作であり、バグではありません。最新のバージョンを入手すると、ローカルの変更を上書きすることはできません。 ここで説明する問題は、最新のバージョンを取得するだけで、編集していないファイルやチェックアウトしていないファイルの最新バージョンをフェッチしないことがあることです。それは本当のバグと非常に深刻なバグです。 – cmenke

関連する問題