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


89

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

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

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



Answers:


39

MS Power Tools中有一个签入策略(禁止模式策略),可用于根据正则表达式筛选文件名。请参阅:Microsoft Team Foundation Server电动工具

虽然签入策略并非完全安全,但它们是TFS强制执行用户定义的规则(例如您要查找的规则)的最接近的方法。

(正如其他人所说,您还可以隐藏文件或文件夹,这意味着它保留在源代码管理中,并且对团队中的其他所有人都可见,但是在您决定取消隐藏之前,它不会复制到您的PC上;或者可以删除文件,这意味着该文件会在每个人的PC都最新时从其PC中删除-但这些选项都不会阻止将此类文件首先添加到源代码管理中)


1
不幸的是,您描述的团队项目范围的排除功能在TFS中不存在。(除非它是在比我的版本更新的2010年版本中)“源代码控制文件类型”对话框控制哪些文件类型不可合并,即仅锁定。
理查德·伯格

我有VSTS2005 / 2008,但正在家里写,所以我的回答是我记忆力很差-对不起!刚刚意识到,您需要的是TFS Power Tools“禁止模式”签入策略。这使您可以使用正则表达式来匹配文件名,并阻止不需要的文件名的签入:msdn.microsoft.com/en-us/teamsystem/bb980963.aspx#checkin
Jason Williams 2009年

打个好电话,我忘了那个政策。我将编辑您的帖子以使其可见。
理查德·伯格

我如何隐瞒一个分支???我错误地隐藏了一个分支,所以我无法隐藏它VS2012
rolivares

95

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

http://msdn.microsoft.com/zh-CN/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.

您将如何递归地忽略packages文件夹,但包含packages / repositories.config?
马斯洛2014年

@Maslow,如果知道的话,请随时编辑我的答案。似乎是一个非常普通的设置,我们应该将它放在示例中
artfulhacker 2014年

即使没有映射/下载文件夹,项目集合根目录中的.tfignore文件也会自动应用到层次结构中吗?
马斯洛

2
仅本地工作空间支持此功能。 msdn.microsoft.com/library/vstudio/…–
Sumo

45

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


1
正是我需要不存储我的缩小文件。
Valamas)

13
令我感到困扰的是,普通的“上下文菜单”中没有列出此选项
Eric Herlitz 2012年

6
我没有那个选择。:'-(
Jan Aagaard

2
它也不存在于Visual Studio 2013 Ultimate中:(
Ytrog 2014年

4
它存在于我的Visual Studio Premium 2013(版本12.0.3023.00更新3)中(在“文件”>“源代码控制”>“高级”>“从源代码管理中排除App.config”下)。
MartinBäckström2014年

21

有一个很难找到的选项:

1.在解决方案资源管理器中选择一个或多个文件

2.转到文件->源代码管理->高级

排除路径

这是

这是排除

请记住:如果您在解决方案资源管理器中右键单击一个文件,您只会发现“最重要的选项”,而不是全部:)


否。您必须取消折叠文件夹并选择要排除的每个文件。
Felix Keil 2014年

13

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

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


7

TFS允许您在文件夹/文件级别进行伪装。伪装某些东西时,TFS不会尝试对其进行同步(很像svn:ignore)。

设置工作空间时,请掩盖任何您希望TFS忽略的内容。更详细的方法在这里


如果只有一种方法可以隐藏所有工作空间的文件夹,则在安全性下看不到任何等效设置。
felickz 2013年

您不能在文件级别隐瞒;仅文件夹。
dudeNumber4 2014年

@ dudeNumber4我相信此功能在TFS的更高版本中已被禁用,并且在写完初始答案之后就已禁用。:你可以试试这个黑客虽然social.msdn.microsoft.com/Forums/vstudio/en-US/...
joshua.ewer

5

这为我工作:

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

来源:=“>如何从TFS源代码管理中排除特定文件



2

之前曾问过这个问题,但它与我遇到的同类问题有关。

问题:

  • 我们要检查我们的代码。
  • 然后,我们要构建我们的项目。
    • 在构建期间,我们依靠Build Events来移动文件,因此我们拥有适当的文件以完成构建过程。
  • 当我们的“构建事件”尝试复制文件时,会出现“访问被拒绝”错误。

原因:

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

生成事件示例:

  • 复制“ $(TargetDir)SomeFile.ext”“ $(ProjectDir)”

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

解决方法:(当我发现此问题时,我几乎将自己踢到了脸上)

新建活动:

  • attrib -R“ $(ProjectDir)SomeFile.ext”
  • 复制“ $(TargetDir)SomeFile.ext”“ $(ProjectDir)”
  • attrib + R“ $(ProjectDir)SomeFile.ext”

我们都在玩Build Events吗?在上面我仅做两件事,我删除了只读属性,现在文件不是只读的。按照我原来想要的方式复制文件。然后替换只读属性(我猜是可选的),以使Visual Studio和Team Foundations满意。

是的...我仍然在踢自己的脸。



0

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

  • 在Windows资源管理器中复制目标文件。
  • 撤消Team Explorer / Visual Studio中目标文件上的待处理更改(如果有)。
  • 在Windows资源管理器中删除目标文件。
  • 将目标文件的副本移动到已删除目标文件的位置,然后重命名它,使其具有与已删除目标文件相同的名称。

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


0

您只需从源代码管理资源管理器中选择文件,然后右键单击它,然后从中选择“重命名”选项,然后就可以在文件名的末尾添加“ .exclude”。

然后切记签入文件,然后您会看到文件已从源代码管理中排除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.