如何忽略文件/目录在TFS避免他们去中央源存储库?

是否可以在TFS源代码控制中设置文件/文件夹以忽略每个项目?

例如,我有一个带有资产文件夹的网站,我不想进入源代码控制。这些资产由一个单独的系统维护。此外,我不想将几个gb的资产放入源代码控制中,但我需要在我的开发机器上放置几个示例,但我也不想签入它们。

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

我想阻止这种事发生。

184531 次浏览

我假设您正在使用Web站点项目。它们会自动抓取项目目录,并将所有内容放入源代码控制中。没有办法阻止他们。

然而,不要绝望。Web应用程序项目没有表现出这种奇怪的和相当出乎意料的(恕我直言:低能)行为。WAP是VS2005的一个插件,直接与VS2008一起提供。

作为将项目更改为WAP的替代方案,您可以考虑将Assets文件夹移出源代码控制并移到TFS文档库中。只有在项目本身不直接使用资产文件时才这样做。

忽略Team Foundation Server中的文件(和文件夹)似乎有点麻烦。我找到了一些方法来做到这一点(使用TFS / Team Explorer / Visual Studio 2008)。这些方法也适用于网站的ASP项目类型。

一种方法是向项目中添加一个新的或现有的项(例如右键单击项目,添加现有项或从Windows资源管理器拖放到解决方案资源管理器中),让TFS处理文件或文件夹,然后撤消对该项的挂起更改。TFS将取消将它们标记为有一个挂起的添加更改,这些文件将安静地保存在项目中,不受TFS的影响。

另一种方法是使用源代码管理资源管理器的“将项目添加到文件夹”命令。这将启动一个小向导,在其中一个步骤中,您可以选择要排除的项(不过,我认为您必须使用此方法向TFS添加至少一个项,以便向导允许您继续)。

您甚至可以添加一个禁止模式签入策略(在团队->团队项目设置->源代码控制…->签入策略)不允许团队中的其他人错误地签入某些资产。

如果你正在使用本地工作空间(TFS 2012+),你现在可以使用.tfignore文件来排除本地文件夹和文件被检入。

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

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

对于懒人:

你可以通过放置文本来配置哪些类型的文件被忽略 在你想要应用规则的文件夹中创建名为.tfignore的文件。的 .tfignore文件的效果是递归的。但是,您可以创建 在子文件夹中重写.tfignore .tfignore文件的效果

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

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

示例文件:

# 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

TFS 2013:

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

Visual Studio将再次检测添加。在排除变化中单击__abc0

在打开的“促进候选人更改”对话框中,您可以使用上下文菜单轻松排除文件和文件夹。选项有:

  • 忽略此项
  • 扩展忽略
  • 按文件名忽略
  • 忽略文件夹(是文件夹,TFS 2013 Update 4/Visual Studio 2013 Premium Update 4)

不要忘记检入已更改的.tfignor - file。

与2015/2017:

在“排除的更改”列表中;在TeamExplorer\Pending Changes中 单击“Detected: xxx add(s)

The Excluded Changes Tab in TeamExplorer\Pending Changes .

“促进候选人变化”;对话框将打开,您可以在条目上右键单击上下文菜单。错别字现在是固定的:-)

我发现了像SVN一样在TFS中忽略文件的完美方法 首先,选择你想要忽略的文件(例如Web.config) 现在转到菜单选项卡并选择:

文件源控制>高级>排除web。配置源码控制

... 和繁荣;您的文件将被永久排除在源代码控制之外。

适用于VS2015和VS2017

使用TFS (on-prem)或VSO (Visual Studio Online - azure托管的产品)

NuGet文档提供了如何完成此任务的说明,我只是成功地在Visual Studio 2015 &Visual Studio 2017对抗VSTS (azure托管的TFS)。所有内容均于2018年8月2016年11月全面更新。

我建议你遵循NuGet的说明,但只是回顾一下我所做的:

  1. 确保你的packages文件夹没有提交给TFS。如果是的话,把它弄出来。
  2. 除非另有说明(NuGet的说明对此不完全清楚),否则我们在下面创建的其他所有内容都将进入与你的.sln文件存在的相同文件夹。
  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文件夹试图潜入我的源代码控制repo!

进一步定制

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