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

时间:2009-05-28 19:39:21

标签: tfs

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

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

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

我想阻止这种情况发生。

6 个答案:

答案 0 :(得分:167)

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

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

MSDN的完整详情 - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

懒惰:

  

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

     

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

     
      
  • #开始评论专栏
  •   
  • *和?支持通配符。
  •   
  • 除非以\ _字符为前缀,否则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

答案 1 :(得分:72)

对于VS2015和VS2017

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

NuGet文档提供了instructions on how to accomplish this,我刚刚成功地使用了Visual Studio 2015&针对VSTS的Visual Studio 2017(Azure托管的TFS)。自2016年11月 2018年8月起,所有内容都已全面更新。

我建议您遵循NuGet的说明,但只是回顾一下我的所作所为:

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

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <solution>
            <add key="disableSourceControlIntegration" value="true" />
        </solution>
    </configuration>
    
    1. 返回您的.sln文件夹并创建一个新文本文件,并将其命名为.tfignore(如果使用Windows资源管理器,请使用与上面相同的技巧并将其命名为{{1 }})
    2. 将以下内容放入该文件中:
    3. <强> .tfignore:

      .tfignore.
      1. 保存所有这些,将其提交给TFS,然后关闭&amp;重新打开Visual Studio,团队资源管理器不应再将packages文件夹标识为挂起的签入。
      2. 通过Windows资源管理器将# 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 文件和.tfignore文件夹复制/粘贴到我的所有解决方案并提交给我们,我不再让.nuget文件夹试图潜入我的源代码控制回购!
      3. 进一步定制

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

答案 2 :(得分:70)

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

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

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

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

答案 3 :(得分:45)

TFS 2013

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

Visual Studio将再次检测添加。点击“检测到:x add(s)” -in 排除的更改

在打开的“推广Cadidate更改”中--Dialog您可以使用Contextmenu轻松排除文件和文件夹。选项包括:

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

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

VS 2015/2017

同样的程序: 在TeamExplorer \ Pending Changes中的“Excluded Changes选项卡”中 点击检测到:xxx add(s)

The Excluded Changes Tab in TeamExplorer\Pending Changes

“促进候选人更改”对话框打开,对于条目,您可以右键单击“上下文菜单”。错字现在已修复: - )

答案 4 :(得分:5)

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

  

文件来源控制&gt;高级&gt;从源代码管理中排除web.config

......和繁荣;您的文件将永久性地从源代码管理中排除。

答案 5 :(得分:4)

我将假设您正在使用网站项目。这些会自动抓取他们的项目目录并将所有内容都放入源代码管理没有办法阻止他们。

然而,不要绝望。 Web应用程序项目没有表现出这种奇怪且意外的(imho:moronic)行为。 WAP是VS2005的插件,直接与VS2008一起使用。

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