是否可以在TFS源代码控制中设置文件/文件夹以忽略每个项目?
例如,我有一个带有资产文件夹的网站,我不想进入源代码控制。这些资产由一个单独的系统维护。此外,我不想将几个gb的资产放入源代码控制中,但我需要在我的开发机器上放置几个示例,但我也不想签入它们。
如果我在绑定源代码控制的同时在这个网站上工作,并且我刷新了树,这些文件将自动再次添加
我想阻止这种事发生。
是否可以在TFS源代码控制中设置文件/文件夹以忽略每个项目?
例如,我有一个带有资产文件夹的网站,我不想进入源代码控制。这些资产由一个单独的系统维护。此外,我不想将几个gb的资产放入源代码控制中,但我需要在我的开发机器上放置几个示例,但我也不想签入它们。
如果我在绑定源代码控制的同时在这个网站上工作,并且我刷新了树,这些文件将自动再次添加
我想阻止这种事发生。
当前回答
适用于VS2015和VS2017
使用TFS (on-prem)或VSO (Visual Studio Online - azure托管的产品)
NuGet文档提供了如何实现这一点的说明,我只是成功地使用了Visual Studio 2015和Visual Studio 2017对抗VSTS (azure托管的TFS)。所有内容都在2016年11月至2018年8月全面更新。
我建议你遵循NuGet的说明,但只是回顾一下我所做的:
Make sure your packages folder is not committed to TFS. If it is, get it out of there. Everything else we create below goes into the same folder that your .sln file exists in unless otherwise specified (NuGet's instructions aren't completely clear on this). Create a .nuget folder. You can use Windows Explorer to name it .nuget. for it to successfully save as .nuget (it automatically removes the last period) but directly trying to name it .nuget may not work (you may get an error or it may change the name, depending on your version of Windows). Or name the directory nuget, and open the parent directory in command line prompt. type. ren nuget .nuget Inside of that folder, create a NuGet.config file and add the following contents and save it:
NuGet.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
回到你的。sln文件夹,创建一个新的文本文件,命名为。tfignore(如果使用Windows资源管理器,使用相同的技巧,命名为。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,然后关闭并重新打开Visual Studio,团队资源管理器应该不再将包文件夹标识为待签入。 通过Windows资源管理器复制/粘贴.tfignore文件和.nuget文件夹到我所有的各种解决方案,并提交它们,我不再有包文件夹试图潜入我的源代码控制回购!
进一步定制
虽然不是我的,但我发现sirkirby的.tfignore模板很方便。在我的回答的例子涵盖了Nuget包文件夹,但这个模板包括一些其他的东西,以及提供了额外的例子,可以是有用的,如果你希望自定义进一步。
其他回答
我发现了像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)。所有内容都在2016年11月至2018年8月全面更新。
我建议你遵循NuGet的说明,但只是回顾一下我所做的:
Make sure your packages folder is not committed to TFS. If it is, get it out of there. Everything else we create below goes into the same folder that your .sln file exists in unless otherwise specified (NuGet's instructions aren't completely clear on this). Create a .nuget folder. You can use Windows Explorer to name it .nuget. for it to successfully save as .nuget (it automatically removes the last period) but directly trying to name it .nuget may not work (you may get an error or it may change the name, depending on your version of Windows). Or name the directory nuget, and open the parent directory in command line prompt. type. ren nuget .nuget Inside of that folder, create a NuGet.config file and add the following contents and save it:
NuGet.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
回到你的。sln文件夹,创建一个新的文本文件,命名为。tfignore(如果使用Windows资源管理器,使用相同的技巧,命名为。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,然后关闭并重新打开Visual Studio,团队资源管理器应该不再将包文件夹标识为待签入。 通过Windows资源管理器复制/粘贴.tfignore文件和.nuget文件夹到我所有的各种解决方案,并提交它们,我不再有包文件夹试图潜入我的源代码控制回购!
进一步定制
虽然不是我的,但我发现sirkirby的.tfignore模板很方便。在我的回答的例子涵盖了Nuget包文件夹,但这个模板包括一些其他的东西,以及提供了额外的例子,可以是有用的,如果你希望自定义进一步。
如果你正在使用本地工作区(TFS 2012+),你现在可以使用.tfignore文件来排除本地文件夹和文件的签入。
如果将该文件添加到源代码控制,则可以确保团队中的其他人共享相同的排除设置。
MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore的详细信息
对于懒人:
You can configure which kinds of files are ignored by placing a text file called .tfignore in the folder where you want rules to apply. The effects of the .tfignore file are recursive. However, you can create .tfignore files in sub-folders to override the effects of a .tfignore file in a parent folder. The following rules apply to a .tfignore file: # begins a comment line The * and ? wildcards are supported. A filespec is recursive unless prefixed by the \ character. ! negates a filespec (files that match the pattern are not ignored)
示例文件:
# 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-Team Explorer中,在PendingChanges对话框中撤销状态为[add]的更改,该状态应被忽略。
Visual Studio将再次检测添加。点击“检测到:x添加(s)”-排除的更改
在打开的“促进候选人的变化”对话框中,您可以轻松地排除文件和文件夹与上下文菜单。选项有:
忽略此项 扩展忽略 按文件名忽略 忽略文件夹(是文件夹,TFS 2013 Update 4/Visual Studio 2013 Premium Update 4)
不要忘记检入已更改的.tfignor - file。
2015/2017 VS:
同样的程序: 在TeamExplorer\Pending Changes的“Excluded Changes”选项卡中 点击检测到:xxx add(s)
弹出“Promote Candidate Changes”对话框,在条目上右键单击上下文菜单。错别字现在是固定的:-)
我假设您正在使用Web站点项目。它们会自动抓取项目目录,并将所有内容放入源代码控制中。没有办法阻止他们。
然而,不要绝望。Web应用程序项目没有表现出这种奇怪的和相当出乎意料的(恕我直言:低能)行为。WAP是VS2005的一个插件,直接与VS2008一起提供。
作为将项目更改为WAP的替代方案,您可以考虑将Assets文件夹移出源代码控制并移到TFS文档库中。只有在项目本身不直接使用资产文件时才这样做。