web-dev-qa-db-ja.com

Team Foundation Serverの「除外された変更」とは何ですか?

Visual Studio 2013Professionalを使用してTFSExpress 2013の変更をチェックインすると、1541個のアイテムを含む「除外された変更」のリストが表示されます。

私はTFSに変更を除外するように指示したことはなく、変更を「除外」したい理由がわかりません(変更の保存に関するすべてのソース管理ではありませんか?)。保存されていない変更があるのではないかと少し心配しています...しかし、これが何を意味するのかさえわかりません。 TFSの「除外された変更」の詳細についてGoogleで検索しましたが、説明が見つかりません。

誰かが私に説明できますか:除外された変更とは何ですか?変更を除外したいのはなぜですか?また、除外を要求したことのない1541の除外された変更があるのはなぜですか?変更が除外されていることを心配する必要がありますか?これらの除外された変更をINCLUDED変更に変更する必要がありますか?

16
Joe Gayetty

「変更」が除外される原因となる可能性のあるものはいくつかあります。

  1. チームエクスプローラーは、デフォルトで、obj/*bin/*および他のいくつかのフォルダー内のファイルを無視します。 .csproj.userのような特定の拡張機能も同様です。
  2. これらは現在のソリューションに読み込まれていないため、Team Explorerは、それらが別のソリューションの一部として作成されており、現在のコンテキストに一致する変更と一緒にチェックインしたくないと想定します。
  3. これらは別のワークスペースで作成されます。ここでも、Team Explorerは、論理的に意味のあるファイルのグループをチェックインすることを想定しています。
  4. それらは現在のチェックインから手動で除外されます。最初にバグ123を修正した1つのファイルをチェックインしてから、バグ124を修正した別のファイルセットをチェックインする場合にこれを行うことができます。
  5. Visual Studioの外部で作成されたファイルは自動的に追加されないため、一連の.csファイルを圧縮してそのZipがワークスペースフォルダーに格納されると、チームエクスプローラーはそれを検出しますが、自動的には追加しません。
  6. ここで発生する可能性のある最後の問題があります。何らかの理由でプロジェクトがソース管理に追加されていない場合、またはソリューションファイルのバインディングが正しくチェックインされていない場合、そのプロジェクトに追加されたファイルはすべて無視されます。同様に、Visual Studioは、プロジェクトがソース管理下にあるべきではないと想定しているためです。
  7. 「既存のプロジェクトの追加」を使用しても、そのプロジェクトはソリューションと同じソース管理バインディングの下に自動的に配置されません。これにより、チームエクスプローラーは6を想定します。
  8. パスは以前に「クローク」または「マップ解除」されていた可能性があり、事後にフォルダーをマップしても、チームエクスプローラーにそれらを追加するように指示されません。
  9. オフラインで作業していて、サーバーワークスペースを使用していた可能性があります。チームエクスプローラーにオンラインに戻るように指示するときは、すべての追加が正しく行われていることを確認する必要があります。ローカルワークスペースには、サーバーと通信することなく変更をローカルで追跡できるため、この問題はありません。
  10. ソリューションエクスプローラー(または個々のアイテムやプロジェクト)またはソース管理エクスプローラーのサブフォルダーから[保留中の変更をチェックインする]を選択した可能性があります。これを行うと、チームエクスプローラーは、[保留中の変更]ウィンドウを、そのコンテキストに一致するアイテムのみにスコープします。他のすべての変更は、一時的に「除外された変更」セクションに移動されます。

除外された変更リストを調べて、.tfignoreファイルを使用してそれらを無視する必要があります。このような除外された変更を右クリックし、パス/拡張子またはパターンで無視するオプションを選択することで、UIからもこれを行うことができます。

enter image description here

基本的に、[除外ファイル]セクションに内容が表示されている場合は、右クリックして含めるか、.tfignoreファイルに追加します。

そうすれば、そのリストの項目がまだ評価されておらず、おそらく含める必要があることは、少なくとも非常に明確です。

を開いてソース管理のバインディングを確認することもできます File/Source Control/Advanced/Change Source Control Bindings... すべてのプロジェクトがsourcecontrolにバインドされているものとして表示され、エラーが表示されないようにするため。

いくつかの追加のコンテキスト

Gitや他のソース管理システムでは、変更が自動的に保留されないことがよくあります。これは、意図しないものを誤ってチェックインするのを防ぐためです。 Gitでは、明示的にgit addを呼び出して、変更をコミットする予定の変更としてマークする必要があります。それを行うまで、変更は「追跡されていない」と見なされます。これは、本質的にTFVCの「除外された変更」機能です。

Subversion(SVN)も同様の動作をしており、変更されたファイルは nversioned としてマークされ、svn addを呼び出して明示的に追加する必要があります。

したがって、これはソース管理システムにとってそれほど奇妙な動作ではありません。それは本質的にあなたをあなたのソースコントロールに置きます)。

18
jessehouwing

ファイルが除外される別のケースを提供したかった。テンプレートからプロジェクトを追加する場合、または「MainWindow」などのデフォルト名を含む新しいアイテムをプロジェクトに追加する場合は、変更をコミットする前に、そのファイルの名前を変更するか削除してください。 「MainWindow」は除外された変更に含まれ、新しい名前のアイテムは含まれた変更に含まれます。この場合、それらを安全に削除できます。

2
Rbass