TFS が常に最新の作業を取得しないのはなぜですか?
その機能は徹底的にテストされていると思っていたでしょう。
私がしなければならないことは、特定のバージョンを取得してから、書き込み可能なファイルの上書きとすべてのファイルの上書きの両方をチェックすることです。
私のローカルセットアップが台無しですか、それともあなたもこれをしますか?
TFSは、「GetLatest」の機能を再定義しました。TFSの用語では、[最新の取得]とは、ファイルの最新バージョンを取得することを意味しますが、サーバーが既にワークスペースにあると見なすファイルは無視してください。私にとって、そして地球上の他のほとんどすべての人にとって、これは間違っています。
このリンクを参照してください:http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx
必要な処理を実行する唯一の方法は、特定のバージョンを取得してから、両方の[上書き...]チェックボックスをオンにすることです。
Get specific version
両方のチェックボックスをオンにしても、最新のファイルが取得されない場合があります。おそらくファイルに変更を加え、最新バージョンを再取得してそれらの変更を元に戻したいと思うでしょう。ええと...それUndo pending changes
は目的ではなく、目的ですGet specific version
。
疑問がある場合:
そして、これは私が発見した私のお気に入りです:
Output
次のようなメッセージがないか、ウィンドウに注目してください。
警告 - 保留中の編集があるため、R:\TFS-PROJECTS\www.example.com\ExampleMVC\Example MVC\Example MVC.csproj を更新できません。
この重大なメッセージは、出力ウィンドウに表示されます。他の通知はありません!保留中の変更はなく、明示的に要求したファイルが取得されなかったことを示す他のダイアログ メッセージもありません。はいUndo pending changes
、ファイルを実行して取得するだけでこれを解決できます。
TFS は、Perforce などの他のソース管理プロバイダーと同様に、これを行います。システムは、正常に取得された最後のバージョンが何であったかを認識しているため、最新の取得は「x 以降の変更を取得」に変わります。そのルールに従ってプレイし、編集する前に実際にチェックアウトする場合、問題を混乱させることはなく、「最新のものを入手する」は実際にそのとおりです。
これまで見てきたように、すべてを再評価するように強制できます。これにより、帯域幅の使用量が大幅に増加しますが、SourceSafe の使用方法に近い動作をします。
同じユーザーとして TFS にログインしており、ワークスペース名 (デフォルトではマシン名に基づく) も同じであるため、TFS は同じマシンと同じワークスペースにいると見なし、すでに最新バージョンのファイルなので、それらを取得しません。
マシンの名前を変更して、新しいマシンとして新しいワークスペースを作成してみてください。
残念ながら、TFS 2008 には 1 つまたは複数のバグがあるはずです。この問題は、開発者のマシンや、私が働いているビルド サーバーでも定期的に発生するからです。
Get Latest を実行できます。プロジェクトの履歴リストで、最後に Get Latest を実行した後にコミットがあったことを確認できます。ディスク上のファイルにはまったく手を加えていませんが、「Get Latest」機能が実行された後完了しましたが、TFS タブを確認すると、一部のファイルがまだ最新バージョンではないと表示されています。
明らかに、TFS はローカルに古いファイルがあると判断できます。これは、リストにそう記載されているためです。それでも、Get Latest ではそれができません。最新バージョンを入手してください。私があなたと同じように Get Specific バージョンを使用し、ダイアログの下部にある 2 つのチェックボックスをオンにすると、ファイルが取得されます。
代わりに Get Specific バージョン タイプの関数を常に使用するようにビルド サーバーを変更したため、この部分は機能するようになりましたが、ビルド サーバー (TeamCity) は、ビルドを開始するためにファイルに変更があったかどうかのチェックにも依存しているためです。 、「何も変更されていない、ここに何も表示されていない、先に進む」モードに陥り、ビルド構成を強制的に実行するまで何もしないことがあります。
この問題は、最新のビルドと手動での取得を除いて、決して触れられていないマシンで発生したため、ファイルを改ざんすることはありません。TFSが混乱しているだけです。
この問題が発生したとき、私はディスク上のファイルが以前に取得したバージョンとまったく同じバイナリであることを確認したので、手動でファイルを改ざんしたことはありませんでした。
また、実際に内容を見ずに、ディスク上でファイルが変更されたかどうかを TFS がどのように「認識」できるかがわかりません。TFS の一部がファイルが実際に最新バージョンではないことを確認できる場合、Get Latest バージョンは最新バージョンを確実に取得できるはずです。これは、ここの他の回答へのコメントを参照しています。
デフォルトでは、「最新バージョンを取得」は、最後に「最新バージョンを取得」を実行してからサーバー上で変更されたファイルのみをダウンロードします。TFS はダウンロードしたファイルを追跡するため、同じバージョンのファイルを再度ダウンロードするのに時間を費やすことはありません。Visual Studio の外部でファイルを変更している場合、これが一貫性の問題を引き起こす可能性があります。
Visual Studio 2012 でも同じ問題が発生しました。何をしても、TFS ソース管理からコードを取得できませんでした。
私の場合、原因はフォルダー + サブフォルダーをソース管理から個別にマッピングしていましたが、ローカル HD の同じツリーにマッピングしていました。
解決策は、「ワークスペースの管理」ウィンドウを使用してサブフォルダーのマッピングを削除することでした。
Get Latest が期待どおりに機能しないという開発者の不満のほとんどは、ソース管理エクスプローラーではなくソリューション エクスプローラーから Get Latest を実行しているという事実に起因しています。ソリューション エクスプローラーは、ソリューションの一部であるファイルのみを取得し、ソリューション内のファイルで必要とされる可能性のあるファイル (ソース管理の一部) を無視します。一方、ソース管理エクスプローラーは、ローカル ワークスペースとサーバー上のリポジトリを比較して、どのファイルを決定するかを決定します。が必要です。
これは私にとってはうまくいきました:
1. Visual Studio を終了します
。 2. コマンド ウィンドウを開き、フォルダー "%localappdata%\Local\Microsoft\Team Foundation\" に移動し
ます。 「キャッシュ」とその内容
4. Visual Studio を再起動し、TFS に接続します。
5. Get Latest Version をテストします。
これが発生するたびに (これまで)、.csproj プロジェクト ファイルで保留中のローカル編集があるためです。そのファイルは、プロジェクトに含まれるすべてのファイルのリストを保持しているようです。他の誰かによって追加された新しいファイルは、ローカルで編集された (現在は古い) プロジェクト ファイルに含まれていないため、「ダウンロードされません」。すべてのファイルを取得するには、最初に.csprojファイルへの保留中の変更を元に戻し、次に「すべて取得」する必要があります。行った他の変更を元に戻す必要はありませんが、戻って新しいファイルを再度含める必要がある場合があります (そして、次の人が「すべてを取得」しようとすると同じ問題が発生します...)
複数の人が同時に新しいファイルを追加しているとき、いくつかの根本的な不注意があるように私には思えます。
(これは .Net Framework プロジェクトにあります。Core などの他のフレームワークでは動作が異なる可能性があります)
同じアカウントで 2 つの異なるマシンから TFS を使用している場合に発生する可能性があります。その場合は、比較して変更されたファイルを確認し、それらをチェックアウトしてから最新のものを取得し、保留中の変更を元に戻してチェックアウトを削除する必要があります。
ツール: TFS パワー ツール
ソース: http://dennymichael.net/2013/03/19/tfs-scorch/
コマンド: tfpt scorch /recursive /deletes C:\LocationOfWorkspaceOrFolder
これにより、ファイルのリストを削除またはダウンロードするように求めるダイアログ ボックスが表示されます。それに応じてファイルを選択または選択解除し、[OK] を押します。グリッドでの外観 (CheckBox、FileName、FileAction、FilePath)
原因: TFS は、ワークスペース内のアイテムに対してのみ比較します。ワークスペースの外で変更が行われた場合、TFS はそれらを認識しません。
うまくいけば、誰かがこれが役に立つと思います。さまざまな場所にあるいくつかのフォルダーを削除した後、この投稿を見つけました。削除したフォルダーを覚えていないため、通常使用していた [強制的に取得/置換] オプションが除外されました。