如何忽略TFS中的文件/目录以避免它们进入中央源代码库?

是否可以设置文件/文件夹忽略TFS源代码pipe理中的每个项目的基础?

例如,我有一个资源文件夹的网站,我不想进入源代码pipe理。 这些资产由一个单独的系统维护。 另外,我不想将几千兆字节的资源放到源代码pipe理中,但是我需要在开发机器上安装几个示例,但是我不想检查这两个示例。

如果我在绑定到源代码控制的同时在这个网站上工作,并刷新树,这些文件将自动重新添加

我想防止这种情况发生。

对于VS2015和VS2017

适用于TFS(本地)或VSO(Visual Studio Online – Azure托pipe产品)

NuGet文档提供了关于如何实现这一点的说明,并且我已经成功针对Visual Studio 2015针对VSTS(Azure托pipe的TFS)进行了跟踪。 所有内容在2016年11月之前都会全面更新。对于Visual Studio 2017 RTM(2017年3月)也是如此。

我build议你遵循NuGet的指示,但只是要回顾一下我所做的:

  1. 确保你的packages文件夹没有提交给TFS。 如果是的话,把它从那里拿出来。
  2. 除非另有说明(NuGet的说明并不完全清楚),否则我们下面创build的所有其他文件都会进入到.sln文件所在的文件夹中。
  3. 创build一个.nuget文件夹。 您可以使用Windows资源pipe理器将其命名为.nuget. 它会成功保存为.nuget (它会自动删除最后一个时间段),但直接尝试命名.nuget可能无法正常工作(根据您的Windows版本,您可能会遇到错误或者可能会更改名称)。
  4. 在该文件夹的内部,创build一个NuGet.config文件并添加以下内容并保存它:

NuGet.config:

 <?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration> 
  1. 回到.sln的文件夹中,创build一个新的文本文件并命名为.tfignore (如果使用Windows资源pipe理器,请使用与上述相同的技巧并将其命名为.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,然后closures并重新打开Visual Studio,团队资源pipe理器不应再将包文件夹标识为挂起签入。
  2. 通过Windows资源pipe理器复制/粘贴.tfignore文件和.nuget文件夹到我所有的各种解决scheme,并提交他们,我不再有packages文件夹试图潜入我的源代码控制回购!

进一步的定制

虽然不是我的,我发现这个由sirkirby .tfignore模板是方便的。 在我的答案中的例子涵盖了Nuget packages文件夹,但是这个模板包含了一些其他的东西,以及提供了额外的例子,如果你想进一步定制它可以是有用的。

如果您使用的是本地工作空间(TFS 2012+),则现在可以使用.tfignore文件来排除本地文件夹和文件的签入。

如果您将该文件添加到源代码pipe理中,则可以确保您的团队中的其他人共享相同的排除设置。

MSDN全面详细信息 – http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

对于懒惰:

您可以通过将名为.tfignore的文本文件.tfignore要应用规则的文件夹中来configuration忽略.tfignore文件。 .tfignore文件的效果是recursion的。 但是,您可以在子文件夹中创build.tfignore文件来覆盖父文件夹中的.tfignore文件的效果。

以下规则适用于.tfignore文件:

  • #开始注释行
  • *和? 支持通配符。
  • 一个filespec是recursion的,除非用\字符作为前缀。
  • ! 否定一个文件规范(匹配模式的文件不会被忽略)

示例文件:

 # 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 

忽略Team Foundation Server中的文件(和文件夹)似乎有点麻烦。 我find了一些方法来做到这一点(使用TFS /团队资源pipe理器/ Visual Studio 2008)。 这些方法也适用于网站ASP项目types。

一种方法是将新项目或现有项目添加到项目中(例如右键单击项目,添加现有项目或从Windows资源pipe理器拖放到解决scheme资源pipe理器中),让TFS处理文件或文件夹,然后撤消挂起项目的变化。 TFS会将它们取消标记为有待添加更改,并且这些文件将安静地放置在项目中,并停留在TFS之外。

另一种方法是使用源代码pipe理资源pipe理器的“添加项目到文件夹”命令 这将启动一个小向导,在其中一个步骤中,您可以select要排除的项目(尽pipe如此,我认为您必须向TFS添加至less一个项目,并且该向导可让您继续)。

您甚至可以添加一个禁止模式签到策略(在团队 – >团队项目设置 – >源代码pipe理 – >签入策略下)禁止团队中的其他人错误地检查某些资产。

对于TFS 2013

从VisualStudio- 团队资源pipe理器开始,在PendingChanges对话框中撤销状态为[add]的更改,应该忽略该状态。

Visual Studio将再次检测到Add(s)。 单击“检测到:x添加(s)” – 在排除的更改

在打开的“促进Cadidate变化”-Dialog你可以很容易排除文件和文件夹与上下文菜单。 选项是:

  • 忽略这个项目
  • 通过扩展忽略
  • 按文件名忽略
  • 忽略ffolder(是ffolder,TFS 2013 Update 4 / Visual Studio 2013 Premium Update 4)

不要忘记检入已更改的.tfignore文件。

对于2015/2017赛季

相同的步骤:在TeamExplorer \ Pending Changes的“Excluded Changes Tab”中点击Detected:xxx add(s)

TeamExplorer \ Pending Changes中的“Excluded Changes”选项卡

“推进候选变更”对话框打开,在条目上您可以右键单击上下文菜单。 Typo现在已经修复:-)

我将假设您正在使用网站项目。 这些自动抓取他们的项目目录,并把所有东西都放到源代码控 没有办法阻止他们。

但是,不要绝望。 Web应用程序项目不会performance出这种奇怪而且意想不到的(imho:moronic)行为。 WAP是VS2005的插件,直接来自VS2008。

作为将您的项目更改为WAP的替代scheme,您可以考虑将“资产”文件夹从“源代码”控件移出到TFS文档库中。 只有这样做,如果项目本身不直接使用资产文件。

我发现了像SVN一样忽略TFS文件的最佳方式。
首先,select你想忽略的文件(例如Web.config)。
现在进入菜单标签并select:

文件源控制>高级>从源代码pipe理中排除web.config

和繁荣; 您的文件被永久排除在源代码pipe理之外。