如何从TFS源代码管理中排除特定文件

时间:2009-09-02 18:42:10

标签: tfs

我们有多个配置文件(app.DEV.config,app.TEST.config等)和一个预构建事件,可将正确的配置文件复制到app.config。显然,配置特定的文件是在源代码控制中---但目前App.Config也是如此,那不应该是。

如何将一个文件标记为从源代码管理中排除,但显然不是来自项目。

我正在使用VS 2005和2005 Team Explorer。

11 个答案:

答案 0 :(得分:94)

在TFS2012中很容易,创建一个.tfignore文件

http://msdn.microsoft.com/en-us/library/tfs/ms245454%28v=vs.110%29.aspx#tfignore

######################################
# 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

# EDIT https://msdn.microsoft.com/en-us/library/ms245454(v=vs.110).aspx#tfignore
# A filespec is recursive unless prefixed by the \ character.

答案 1 :(得分:43)

在解决方案资源管理器中选择App.config文件,然后选择文件 - >源控制 - >从源代码管理中排除App.config。

答案 2 :(得分:39)

MS Power Tools中有一个签入策略(禁止模式策略),允许您根据正则表达式筛选文件名。请参阅:Microsoft Team Foundation Server Power Tools

虽然签入政策并非完全万无一失,但它们是TFS最接近实施用户定义规则的方式,就像您正在寻找的那样。

(正如其他人所说,你也可以隐藏一个文件或文件夹,这意味着它保留在Source Control中并且对团队中的其他人都可见,但是在你决定揭开它之前它不会复制到你的PC上;或者您可以删除该文件,这意味着当它们最新时会从每个人的PC中删除它 - 但这些选项都不会阻止这些文件首先被添加到源代码控制中。

答案 3 :(得分:21)

有一个很难找到的选项:

<强> 1。在解决方案资源管理器

中选择文件或多个文件

<强> 2。转到文件 - &gt;源控制 - &gt;高级

Path To Exclude

这里是

Here is the Exclude

请记住: 如果右键单击解决方案资源管理器中的文件,您只能找到&#34;最重要的选项&#34;不是全部:))

答案 4 :(得分:13)

如果你想要的只是在项目中有一个文件而不是在TFS的源代码控制下,只需进入SourceControl,删除所述文件,并撤消项目文件的签出(它将尝试从中删除文件该项目也是如此)。然后签入删除您要排除的文件。在解决方案资源管理器中,您应该看到您要排除的文件旁边没有源控件图标。项目文件应该在那里列出一个文件,但该文件现在应该不再受源代码控制。

请记住,任何其他人现在都会在项目最新时看到丢失的文件。

答案 5 :(得分:7)

TFS允许您隐藏文件夹/文件级别。当某些东西被隐藏时,TFS不会尝试同步它(就像svn:ignore)。

设置工作区时,请隐藏您希望TFS忽略的任何内容。更详细的操作方法是here

答案 6 :(得分:5)

这对我有用:

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

来源: =&#34;&gt;如何从TFS源代码控制中排除特定文件

答案 7 :(得分:2)

Visual Studio 2013(及2012)

通过选择文件并转到:

可以使用此功能
File > Source Control > Advanced > Exclude ... from Source Control

答案 8 :(得分:2)

这个问题刚才被问过,但它与我遇到的同类问题有关。

问题:

  • 我们想查看我们的代码。
  • 然后我们想要构建我们的项目。
    • 在构建过程中,我们依靠Build Events来移动文件,因此我们有适当的文件来完成构建过程。
  • 当我们的构建事件尝试复制文件时,我们会收到“拒绝访问”错误。

原因:

  • 当我们签入文件时,Team Foundation Server Visual Studio插件会将文件的只读属性更改为READONLY TRUE。

构建事件示例:

  • copy&#34; $(TargetDir)SomeFile.ext&#34; &#34; $(PROJECTDIR)&#34;

上面,我们只需要将文件从目标构建路径(bin \ debug或bin \ release文件夹)移动到我们的项目文件夹。在我的情况下,这是我可以在我的安装程序中包含项目构建的文件。我的安装程序并没有把它们作为项目输出的一部分。

修复:(当我想出来时,几乎踢了我的脸)

新建活动:

  • attrib -R&#34; $(ProjectDir)SomeFile.ext&#34;
  • copy&#34; $(TargetDir)SomeFile.ext&#34; &#34; $(PROJECTDIR)&#34;
  • attrib + R&#34; $(ProjectDir)SomeFile.ext&#34;

我们对Build Events感兴趣吗?上面我只做了两件事,我删除了只读属性,现在这些文件不是只读的。像我原来想要的那样复制我的文件。然后替换只读属性(我猜可选)以保持Visual Studio和Team Foundations的快乐。

是的......我仍然在这个人面前踢自己。

答案 9 :(得分:0)

我有类似的问题,我的App.config包含敏感数据(例如用户名),此数据不应与TFS同步。

文章Best practices for deploying passwords and other sensitive data to ASP.NET and Azure App Service描述了防止此问题的好方法:

使用&#34;文件&#34; &#34; appSettings&#34;的属性元素,用于引用未添加到源代码控制的配置文件

答案 10 :(得分:0)

如果您的版本低于TFS2012,因此无法创建.tfignore文件或使用File > Source Control > Advanced > Exclude …选项,则可以尝试以下操作:

  • 在Windows资源管理器中制作目标文件的副本。
  • 在团队资源管理器/ Visual Studio中撤消目标文件上的待更改(如果有)。
  • 在Windows资源管理器中删除目标文件。
  • 将目标文件的副本移动到已删除目标文件的位置,并将其重命名,使其与已删除的目标文件同名。

TFS现在似乎忽略了目标文件中的更改。如果您需要再次编辑该文件,请不要使用Visual Studio,因为TFS会将该文件放回具有待更改的文件列表中。