TFSのファイル/ディレクトリを無視して、中央のソースリポジトリに移動しないようにする方法は?


254

TFSソース管理でプロジェクトごとに無視するファイル/フォルダーを設定することは可能ですか?

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

ソース管理にバインドされているときにこのWebサイトで作業していて、ツリーを更新すると、これらのファイルは自動的に再度追加されます

これを防ぎたい。


1
ローカルワークスペースの場合は、.tfignoreを使用できます-Richard Banksが指摘するようなファイル。team-ExplorererのContext-Menuでこのファイルを調整するには、私の回答を参照してください。サーバーワークスペースの場合、コメントにリンクを提供しました。
gReX 2015

回答:


88

VS2015およびVS2017の場合

TFS(オンプレミス)またはVSO(Visual Studio Online-Azureがホストするサービス)と連携

NuGetのドキュメントには、これを実現する方法の説明が記載されており、VSTS(AzureでホストされているTFS)に対してVisual Studio 2015およびVisual Studio 2017で問題なく追跡できました。2016年11月の時点で、すべてが完全に更新されています。

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を閉じて再度開くと、チームエクスプローラーはパッケージフォルダーを保留中のチェックインとして識別しなくなります。
  2. Windowsエクスプローラーを介して.tfignoreファイルと.nugetフォルダーをすべてのさまざまなソリューションにコピーして貼り付け、それらをコミットしました。packagesフォルダーがソース管理リポジトリに忍び込むことはなくなりました。

さらなるカスタマイズ

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


1
VS 2017-TFS 2015でこれに従いました。すべてのNugetパッケージが保留中の変更として表示されなくなりました。
James Walsh Jr 2017年

検出された変更を開き、新しく作成されたファイルを保留中の変更に手動で追加する必要がありました。すべてがうまくいったことを除いて。
マチャド

これは私にはうまくいきませんでした。VS 2017-TFS2015。何もチェックインできません。試行すると、次のエラーが表示されます: "D:\ Src \ MiniCoreWebAPI \ packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll:パスの一部が見つかりませんでした」
Rod

パッケージフォルダーをチェックインしていませんが、保留中の変更として既に検出されています。これらの手順を適用した後、パッケージフォルダーで "保留中の変更を元に戻す"必要がありました。その後、再構築し、NuGetでパッケージを復元したところ、すべて問題ありませんでした。
CodeHxr

172

ローカルワークスペース(TFS 2012+)を使用している場合は、 .tfignoreファイルをて、ローカルフォルダーとファイルをチェックインから除外できます。

そのファイルをソース管理に追加すると、チームの他のメンバーが同じ除外設定を共有できるようになります。

MSDNの詳細-http ://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

怠惰な場合:

.tfignoreルールを適用するフォルダにテキストファイルを置くことで、無視するファイルの種類を設定できます。.tfignoreファイルの影響は再帰的です。ただし、サブフォルダーに.tfignoreファイルを作成.tfignore して、親フォルダー内のファイルの効果を上書きできます。

次の規則が.tfignoreファイルに適用されます。

  • # コメント行を開始します
  • *と?ワイルドカードがサポートされています。
  • ファイル指定は、接頭部が¥文字でない限り、再帰的です。
  • !ファイル指定を否定します(パターンに一致するファイルは無視されません)

ファイルの例:

# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

35
私はそれをやってみました。無視される唯一のものは、.tfignoreファイルの内容です:(
user1852503

15
私のコンピュータは私が作成できませんでした@SerjSagan .tfignore私が作成したので.tfignore.、それは自分自身で最後のドット...削除
ピーター・

5
問題は、1)チェックイン前にソース管理エクスプローラーウィンドウで明示的に削除され、2)保留中の変更ウィンドウで明示的に除外されたリソースのみを無視することです。たとえば、それを使用してパッケージフォルダーを無視し、NuGetパッケージの復元に依存する場合、1)ソース管理エクスプローラーでパッケージフォルダーを削除し、2)NuGetパッケージの復元プロセス後に保留中の変更ウィンドウで除外する必要があります。 。それ以外の場合は、パッケージフォルダーをチェックインします。
Deilan

1
.tfignore適切な名前がないためにWindowsでファイルを作成できない場合は、ファイルを作成するか、コマンドラインウィンドウで名前を変更できます。
Zarepheth 2015年

1
VS2015の.tfignoreにはいくつかの大きな問題があります。人々は非常に不満ですが、問題の明確な声明、またはそれを修正するための明確なコミットメントはないようです。
bbsimonbb

71

それはありませんのTeam Foundation Serverでのファイル(およびフォルダ)を無視するように少し面倒に思えます。これを行う方法をいくつか見つけました(TFS /チームエクスプローラー/ Visual Studio 2008を使用)。これらのメソッドは、WebサイトのASPプロジェクトタイプでも機能します。

1つの方法は、新規または既存のアイテムをプロジェクトに追加し(プロジェクトを右クリックする、既存のアイテムを追加する、またはWindowsエクスプローラーからソリューションエクスプローラーにドラッグアンドドロップする)、TFSにファイルまたはフォルダーを処理させ、保留を取り消すことです。アイテムの変更。TFSは、それらに保留中の追加変更があるものとしてマークを解除し、ファイルはプロジェクト内に静かに配置され、TFSから除外されます。

もう1つの方法は、ソース管理エクスプローラーの[アイテムをフォルダーに追加]コマンドを使用する方法です。これにより小さなウィザードが起動し、手順の1つで除外する項目を選択できます(ただし、ウィザードを続行するには、この方法で少なくとも1つの項目をTFSに追加する必要があると思います)。

禁止パターンのチェックインポリシー([チーム]-> [チームプロジェクトの設定]-> [ソース管理]-> [チェックインポリシー]の下)を追加して、チームの他のユーザーが誤って特定のアセットをチェックインできないようにすることもできます。


7
禁止パターンのポリシーはありませんでした。関連する質問への回答により、どこで入手できるが明らかになります。明らかにTFS Power Toolsの一部です。
Leif Carlsen、2011

1
私は同様の問題に直面しています。チェックインポリシーを使用してチェックインしない特定のフォルダーの詳細を提供できますか
Imran Rizvi

おっと-あなたは正しい、レイフ。TFS Power Toolsの一部です。
Derek Morrison

イムラン、残念ながら私はジョブを切り替え、TFSを使用せず、過去のプロジェクトにアクセスできません。そのため、禁止されているパターンのチェックインポリシー構文の構文についてはわかりません。多分この質問は役に立ちますか?stackoverflow.com/questions/2741412/...
デレク・モリソン

TFS 2010含めるファイルを選択したら、そのリストから除外できます。既存のファイルを操作できない...
JNF

47

以下のためのTFS 2013

VisualStudio-でスタートチームエクスプローラで、PendingChangesダイアログが無視されるべきであるwhith状態[追加]、変更を元に戻します。

Visual Studioは追加を再度検出します。[ Detected:x add(s)] - 除外された変更をクリックします

開いた「候補変更のプロモート」ダイアログで、コンテキストメニューを使用してファイルとフォルダーを簡単に除外できます。オプションは次のとおりです。

  • このアイテムを無視する
  • 拡張子で無視
  • ファイル名で無視
  • ffolderで無視(はいffolder、TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

変更された.tfignore-Fileをチェックインすることを忘れないでください。

以下のためのVS 2015/2017

同じ手順:TeamExplorer \ Pending Changesの[Excluded Changes]タブで、[Detected:xxx add(s)]をクリックします。

TeamExplorer \ Pending Changesの[Excluded Changes]タブ

[候補変更のプロモート]ダイアログが開き、エントリで右クリックしてコンテキストメニューを表示できます。タイプミスが修正されました:-)


そのオプションが見つからないようです。私はVS 2015 RCを利用しています。
Shimmy Weitzhandler 2015


@Shimmy:VS 2015 RCの手順は同じですが、タイプミスは同じです。私の更新された回答を参照してください。しかし、stvnが指摘するように、.tfignoreはローカルワークスペースでのみ機能します。サーバー・ワークスペースのためには、ここで答えを、保留中のチェックインに含める取り消し参照する必要があります。stackoverflow.com/questions/21887308/...
GREX

@Shimmy:TFS-Server 2015に接続していますか?あなたが開始することを、確認してくださいチームエクスプローラ VS中
GREX

@ qw1564確かに、最初に質問されたとき、それは可能ではありませんでした。しかし、今、これが私が選択する答えです。クレジットをありがとう!
gReX

5

SVNのようにTFSでファイルを無視する完璧な方法を見つけました。
最初に、無視するファイル(Web.configなど)を選択します。
次に、メニュータブに移動して次を選択します。

ファイルソース管理>詳細設定>ソース管理からweb.configを除外

...そしてブーム; ファイルはソース管理から完全に除外されます。


1
これは、コード生成ファイルのTFS 2010で私のために働いています。どうも!
BozoJoe 2016年

1
これは実際には機能しますが、.tfignoreは機能しません。おかげで
EpicKip 2018年

2
VS 2018ではこのオプションはありません
アダムは

4

Webサイトプロジェクトを使用していると仮定します。これらは自動的にプロジェクトディレクトリをクロールし、すべてをソース管理に投入します。それらを止める方法はありません。

しかし、絶望しないでください。Webアプリケーションプロジェクトは、この奇妙で予期しない(imho:moronic)動作を示しません。WAPはVS2005のアドオンであり、VS2008に直接付属しています。

プロジェクトをWAPに変更する代わりに、Assetsフォルダーをソース管理からTFSドキュメントライブラリに移動することを検討できます。これは、プロジェクト自体が直接アセットファイルを使用しない場合にのみ行ってください。


はい、あなたの仮定は正しいです。私はそれが事実だと思いました、私が何かを見逃していないことを二重に確認したかっただけです。
デイブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.