如何忽略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的指示,但只是要回顾一下我所做的:
- 确保你的
packages
文件夹没有提交给TFS。 如果是的话,把它从那里拿出来。 - 除非另有说明(NuGet的说明并不完全清楚),否则我们下面创build的所有其他文件都会进入到
.sln
文件所在的文件夹中。 - 创build一个
.nuget
文件夹。 您可以使用Windows资源pipe理器将其命名为.nuget.
它会成功保存为.nuget
(它会自动删除最后一个时间段),但直接尝试命名.nuget
可能无法正常工作(根据您的Windows版本,您可能会遇到错误或者可能会更改名称)。 - 在该文件夹的内部,创build一个
NuGet.config
文件并添加以下内容并保存它:
NuGet.config:
<?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>
- 回到
.sln
的文件夹中,创build一个新的文本文件并命名为.tfignore
(如果使用Windows资源pipe理器,请使用与上述相同的技巧并将其命名为.tfignore.
) - 将以下内容放入该文件中:
.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
- 保存所有这些,将其提交给TFS,然后closures并重新打开Visual Studio,团队资源pipe理器不应再将包文件夹标识为挂起签入。
- 通过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)
“推进候选变更”对话框打开,在条目上您可以右键单击上下文菜单。 Typo现在已经修复:-)
我将假设您正在使用网站项目。 这些自动抓取他们的项目目录,并把所有东西都放到源代码控 没有办法阻止他们。
但是,不要绝望。 Web应用程序项目不会performance出这种奇怪而且意想不到的(imho:moronic)行为。 WAP是VS2005的插件,直接来自VS2008。
作为将您的项目更改为WAP的替代scheme,您可以考虑将“资产”文件夹从“源代码”控件移出到TFS文档库中。 只有这样做,如果项目本身不直接使用资产文件。
我发现了像SVN一样忽略TFS文件的最佳方式。
首先,select你想忽略的文件(例如Web.config)。
现在进入菜单标签并select:
文件源控制>高级>从源代码pipe理中排除web.config
和繁荣; 您的文件被永久排除在源代码pipe理之外。