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

Dav*_*ave 246 tfs

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

例如,我有一个带有资产文件夹的网站,我不想进入源代码控制.这些资产由一个单独的系统维护.另外,我不想将几千兆字节的资源放入源代码控制中,但我需要在我的开发机器上使用几个示例,但我不想检查其中的那些.

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

我想防止这种情况发生.

Ric*_*nks 169

如果您使用的是本地工作区(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
Run Code Online (Sandbox Code Playgroud)

  • 我试过这样做.唯一被忽略的是.tfignore文件的内容:( (32认同)
  • @SerjSagan我的电脑不允许我创建`.tfignore`所以我创建了`.tfignore`并且它自己删除了最后一个点.. (15认同)
  • 问题是它只忽略资源,这些资源是1)在签入前在**Source Control Explorer**窗口中显式删除,2)在**Pending Changes**窗口中明确排除.例如,如果您要使用它忽略**packages**文件夹并依赖NuGet Package Restore,则需要1)删除**源代码管理**资源管理器中的**packages**文件夹,然后2)在NuGet包还原过程之后的**Pending Changes**窗口中将其排除.否则它仍将签入**packages**文件夹. (5认同)
  • 我在解决方案级别添加了它,但它不起作用...我是否必须深入到文件的实际位置?根据你的回答,我似乎不需要......而且它是“.tfignore.txt”,对吧? (2认同)

Jax*_*ian 84

对于VS2015和VS2017

适用于TFS(本地)或VSO(Visual Studio Online - Azure托管的产品)

NuGet文档提供了有关如何完成此操作的说明,我刚刚针对VSTS(Azure托管的TFS)成功地遵循了Visual Studio 2015和Visual Studio 2017.截至2016年 8月2018年,所有内容均已全面更新.

我建议您按照NuGet的说明进行操作,但只是回顾一下我的所作所为:

  1. 确保您的packages文件夹未提交给TFS.如果是的话,那就把它拿出来吧.
  2. .sln除非另有说明,否则我们在下面创建的所有其他内容都会进入您文件所在的文件夹(NuGet的说明并不完全清楚).
  3. 创建一个.nuget文件夹.您可以使用Windows资源管理器为其命名.nuget.以便成功保存.nuget(它会自动删除最后一个句点)但直接尝试命名它.nuget可能不起作用(您可能会收到错误或者它可能会更改名称,具体取决于您的Windows版本).
  4. 在该文件夹内,创建一个NuGet.config文件并添加以下内容并保存:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)
  1. 保存所有这些,将其提交给TFS,然后关闭并重新打开Visual Studio,并且团队资源管理器不应再将packages文件夹标识为挂起签入.
  2. 通过Windows资源管理器将.tfignore文件和.nuget文件夹复制/粘贴到我所有的各种解决方案并提交它们,我不再让packages文件夹试图潜入我的源代码控制仓库!

进一步定制

虽然不是我的,但我发现sirkirby的这个.tfignore模板很方便.我的答案中的示例涵盖了Nuget packages文件夹,但此模板包含一些其他内容,并提供了其他示例,如果您希望进一步自定义这些示例.


Der*_*son 70

确实显得有些笨重忽略Team Foundation Server的文件(文件夹).我找到了几种方法(使用TFS/Team Explorer/Visual Studio 2008).这些方法也适用于网站ASP项目类型.

一种方法是一个新的或现有的项目添加到项目(例如,右击项目,从Windows资源管理器中添加现有项目或拖放到解决方案资源管理器),让TFS过程中的文件(S)或文件夹,然后撤消未决项目的变化.TFS会将它们取消标记为具有待定的添加更改,并且文件将静静地放置在项目中并远离TFS.

另一种方法是使用Source Control Explorer的Add Items to Folder命令.这将启动一个小向导,在其中一个步骤中您可以选择要排除的项目(尽管我认为您必须使用此方法向TFS添加至少一个项目,以便向导让您继续).

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

  • 我没有禁止模式政策.回答[相关问题](http://stackoverflow.com/questions/1369442/how-can-i-exclude-a-specific-files-from-tfs-source-control)可以了解到哪里可以获得它.它显然是[TFS Power Tools](http://msdn.microsoft.com/en-us/vstudio/bb980963.aspx)的一部分. (7认同)

gRe*_*ReX 46

对于TFS 2013:

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

Visual Studio将再次检测Add.单击"检测到:x add(s)" - 在排除的更改中

在打开的"促进更改"--Dialog中您可以使用Contextmenu轻松排除文件和文件夹.选项包括:

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

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

对于VS 2015/2017:

相同的过程:在TeamExplorer\Pending Changes中的"Excluded Changes选项卡"中,单击Detected:xxx add(s)

TeamExplorer\Pending Changes中的Excluded Changes选项卡

将打开"提升候选人更改"对话框,并在条目上右键单击"上下文菜单".错字现在修复:-)


Bha*_*rat 5

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

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

......和繁荣; 您的文件将永久排除在源代码管理之外.

  • 我在 VS 2018 中没有这个选项 (2认同)