是否可以在TFS源代码管理中基于每个项目设置要忽略的文件/文件夹?
例如,我有一个带有资产文件夹的网站,我不想进入源代码控制。这些资产由一个单独的系统维护。此外,我不想将几千兆字节的资源放入源代码控制中,但我需要在我的开发机器上使用几个示例,但我不想检查其中的那些。
如果我在绑定源控件的同时在这个网站上工作并刷新树,这些文件将自动再次添加
我想阻止这种情况发生。
答案 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)
NuGet文档提供了instructions on how to accomplish this,我刚刚成功地使用了Visual Studio 2015&针对VSTS的Visual Studio 2017(Azure托管的TFS)。自2016年11月 2018年8月起,所有内容都已全面更新。
我建议您遵循NuGet的说明,但只是回顾一下我的所作所为:
packages
文件夹未提交给TFS。如果是的话,那就把它拿出来。.sln
文件所在的文件夹中(NuGet的说明并不完全清楚)。.nuget
文件夹。您可以使用Windows资源管理器为其命名.nuget.
,以使其成功保存为.nuget
(它会自动删除最后一个句点)但直接尝试将其命名为.nuget
可能不起作用(您可能会得到)错误或它可能会更改名称,具体取决于您的Windows版本。)NuGet.config
文件并添加以下内容并保存:<强> NuGet.config:强>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
.sln
文件夹并创建一个新文本文件,并将其命名为.tfignore
(如果使用Windows资源管理器,请使用与上面相同的技巧并将其命名为{{1 }})<强> .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
文件和.tfignore
文件夹复制/粘贴到我的所有解决方案并提交给我们,我不再让.nuget
文件夹试图潜入我的源代码控制回购!虽然不是我的,但我发现this .tfignore
template by sirkirby很方便。我的答案中的示例涵盖了Nuget packages
文件夹,但此模板包含一些其他内容,并提供了其他示例,如果您希望进一步自定义,这些示例非常有用。
答案 2 :(得分:70)
一种方法是向项目添加新项目或现有项目(例如,右键单击项目,添加现有项目或从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轻松排除文件和文件夹。选项包括:
不要忘记签入已更改的.tfignore文件。
VS 2015/2017 :
同样的程序: 在TeamExplorer \ Pending Changes中的“Excluded Changes选项卡”中 点击检测到:xxx add(s)
“促进候选人更改”对话框打开,对于条目,您可以右键单击“上下文菜单”。错字现在已修复: - )
答案 4 :(得分:5)
我找到了像SVN一样忽略TFS文件的完美方式 首先,选择要忽略的文件(例如Web.config) 现在转到菜单选项卡并选择:
文件来源控制&gt;高级&gt;从源代码管理中排除web.config
......和繁荣;您的文件将永久性地从源代码管理中排除。
答案 5 :(得分:4)
我将假设您正在使用网站项目。这些会自动抓取他们的项目目录并将所有内容都放入源代码管理没有办法阻止他们。
然而,不要绝望。 Web应用程序项目没有表现出这种奇怪且意外的(imho:moronic)行为。 WAP是VS2005的插件,直接与VS2008一起使用。
作为将项目更改为WAP的替代方法,您可以考虑将Assets文件夹移出Source控件并进入TFS文档库。只有在项目本身不直接使用资产文件时才这样做。