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

Joe*_*tty 16 tfs visual-studio-2013 tfs2013 tfvc

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

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

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

jes*_*ing 18

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

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

您应该检查"排除的更改"列表,并使用您的.tfignore文件忽略它们.您也可以通过右键单击此类排除的更改并选择按路径/扩展名或模式忽略的选项,从UI执行此操作.

在此输入图像描述

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

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

您可能还需要通过打开File/ Source Control/ Advanced/ 来检查源控件绑定,Change Source Control Bindings...以确保所有项目都显示为绑定到sourcecontrol并且不显示任何错误.

一些额外的背景

在Git以及其他源代码控制系统中,更改通常不会自动进行.这是为了防止您意外地检查您不想要的东西.在Git中,您需要显式调用git add以将更改标记为您要提交的更改.在您这样做之前,更改被视为"未跟踪",这实际上是TFVC的"排除的更改"功能.

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

因此,源控制系统的这种行为并不是很奇怪.它本质上让控制你的来源.

  • 感谢@jessehouwing的主动性.我将你的答案标记为"已接受".你给了我比我在其他地方找到的更多的信息.我仍然认为上面描述的任何情况都不适用于我的一些情况......但它们仍被排除在外.感谢你的宝贵时间. (3认同)