1. ホーム
  2. tfs

[解決済み】TFSでファイル/ディレクトリを無視し、中央のソースリポジトリに移動しないようにするにはどうすればよいですか?

2022-05-11 04:54:13

質問

TFSのソース管理で、プロジェクト単位で無視するファイル/フォルダを設定することは可能でしょうか?

例えば、assetsフォルダを持つWebサイトがありますが、ソース管理には入れたくありません。これらのアセットは、別のシステムで管理されています。また、数ギガバイトのアセットをソースコントロールに入れたくないのですが、開発マシンにいくつかのサンプルが必要で、それらもチェックインしたくありません。

ソース コントロールにバインドされた状態でこの Web サイトで作業しているときに、ツリーを更新すると、これらのファイルが自動的に再追加されます。

これを防ぎたい。

解決方法は?

VS2015 と VS2017 の場合

TFS (オンプレミス) または VSO (Visual Studio Online - Azure-hosted offering) で動作します。

NuGetのドキュメントでは を達成するための方法を説明します。 で、VSTS(Azure-hosted TFS)に対するVisual Studio 2015 & Visual Studio 2017について、無事その通りに実行したところです。の時点で全てフルアップデートされています。 2016年11月 2018年8月のことです。

NuGetの指示に従うことをお勧めしますが、私がやったことをおさらいしておきます。

  1. を確認します。 packages フォルダが TFS にコミットされていないことを確認します。もしそうなら、そこから取り出してください。
  2. 以下に作成するものはすべて、あなたの .sln ファイルが存在します (NuGetの説明はこれに関して完全には明確ではありません)。
  3. を作成します。 .nuget フォルダーを作成します。Windowsエクスプローラーで、名前を .nuget. として保存することに成功しました。 .nuget (最後のピリオドは自動的に削除されます) しかし、直接名前を付けようとすると .nuget はうまくいかないかもしれません(Windowsのバージョンによっては、エラーが出たり、名前が変わってしまったりします)。 または、ディレクトリをnugetと名付け、コマンドラインプロンプトで親ディレクトリを開きます。 ren nuget .nuget
  4. そのフォルダの中に NuGet.config ファイルを作成し、以下の内容を追加して保存してください。

NuGet.configを作成します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>

  1. に戻ってください。 .sln のフォルダーに新しいテキストファイルを作成し、その名前を .tfignore (Windowsエクスプローラの場合は、上記と同じ要領で、名前を .tfignore. )
  2. そのファイルに、次の内容を入れます。

.tfignore。

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it's 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets

  1. この内容をすべて保存し、TFS にコミットしてから & を閉じます。Visual Studio を再度開くと、packages フォルダがチェックイン待ちであることをチームエクスプローラが認識しなくなるはずです。
  2. Windowsエクスプローラからコピー&ペーストして .tfignore ファイルと .nuget フォルダを様々なソリューションにコピーしてコミットすると、もう packages フォルダがソースコントロールレポに忍び込もうとしているのです!

さらなるカスタマイズ

私のものではありませんが、私が見つけたのは これ .tfignore テンプレート by sirkirby を使うと便利です。私の回答にある例では、Nugetの packages フォルダーを使用しますが、このテンプレートには他のものも含まれており、さらにカスタマイズしたい場合に役立つ追加の例も提供されています。