Team Foundation Server中的“排除的更改”是什么?

时间:2015-05-12 16:05:47

标签: visual-studio-2013 tfs tfvc

当我使用Visual Studio 2013 Professional签入TFS Express 2013中的更改时,有一个“排除的更改”列表,其中包含1541个项目。

我从未告诉TFS排除更改,并且不明白为什么有人甚至想要“排除”更改(不是源控制所有关于SAVING更改???)。我有点担心我有没有被保存的变化......但我甚至不确定这是否意味着什么。我已经用Google搜索了有关TFS中“排除的更改”的更多信息,但未找到任何解释。

任何人都可以向我解释:什么是排除的变化?我为什么要排除更改?为什么有1541个被排除的变更,我从未要求被排除?我是否应该担心排除变化?我应该将这些排除的更改更改为包含更改吗?

2 个答案:

答案 0 :(得分:17)

有很多事情可以导致改变"被排除在外:

  1. 默认情况下,团队资源管理器会忽略obj/*bin/*以及其他一些文件夹中的文件。以及某些扩展程序,例如.csproj.user
  2. 他们没有加载到您当前的解决方案中,因此团队资源管理器假定他们是作为不同解决方案的一部分而制作的,并且您不希望将这些解决方案与这些更改一起检查确实符合你所处的背景。
  3. 他们是在不同的工作区中制作的,Team explorer再次假定您要检查逻辑上有意义的文件组。
  4. 他们被手动排除在当前签入之外。当您想要首先检入修复了Bug 123的文件时,可以执行此操作,然后检入修复了错误124的另一组文件。
  5. 永远不会自动添加在Visual Studio外部创建的文件,因此当您压缩一组.cs文件并且该zip文件夹最终位于工作区文件夹中时,团队资源管理器会检测到它,但不会自动添加它
  6. 这里可能会有最后一个问题,如果由于某种原因项目没有被添加到源代码管理中,或者解决方案文件中的绑定没有正确检查,那么任何文件都会被添加到该项目也将被忽略,因为Visual Studio假定项目不应该在sourcecontrol下。
  7. 使用"添加现有项目"不会自动将该项目置于与解决方案相同的源控件绑定之下。这将导致团队探险家假设6。
  8. 以前的路径可能已经被隐藏了#34;或者"取消映射",在事实之后映射文件夹并不告诉团队资源管理器添加它们。
  9. 您可能一直在脱机工作并使用服务器工作区。当您告诉团队资源管理器重新联机时,您需要确保正确完成所有添加。本地工作区没有此问题,因为它可以本地跟踪更改,而无需与服务器通信。
  10. 您可能已选择"签入待处理的更改"从解决方案资源管理器(或单个项目或项目)或源代码管理资源管理器中的子文件夹。执行此操作时,团队资源管理器将“待定更改”窗口的范围仅限于与该上下文匹配的项目。所有其他更改将暂时移至"排除的更改"部分。
  11. 您应该检查“排除的更改”列表,并使用.tfignore文件忽略它们。您也可以通过右键单击此类排除的更改并选择按路径/扩展名或模式忽略选项,从UI执行此操作。

    enter image description here

    基本上,如果您在“排除的文件”部分中看到内容,请右键单击/包含它们或将它们添加到.tfignore文件中。

    这样,至少非常清楚该列表中的项目尚未进行评估,而且很可能需要包括在内。

    您可能还想通过打开文件 / 源代码管理 / 高级 / 更改源代码管理绑定来检查源代码管理绑定... 确保所有项目都显示为与sourcecontrol绑定,并且不会显示任何错误。

    一些额外的背景

    在Git以及其他源代码控制系统中,更改通常自动挂起。这是为了防止您意外地检查您不想要的东西。在Git中,您需要显式调用git add来将更改标记为您要提交的更改。在您这样做之前,我们会考虑更改"未跟踪",这基本上是"排除的更改" TFVC的特点。

    Subversion(SVN)具有类似的行为,其中更改的文件标记为unversioned,需要通过调用svn add显式添加。

    因此,对于源控制系统来说,这不是一种非常奇怪的行为。它基本上将放在来源控制中。

答案 1 :(得分:2)

想要提供另一个排除文件的案例。如果您将项目中的项目或新项目添加到包含默认名称(如“MainWindow”)的项目中,则在提交更改之前重命名或删除该文件。 “MainWindow”将处于排除的更改中,具有新名称的项目将包含在“包含的更改”中。在这种情况下,您可以安全地删除它们。