如何在TFS中禁用或删除候选更改

时间:2017-03-08 01:46:22

标签: c# api tfs

当tfs工作区中的文件移到tfs之外时(例如通过Windows资源管理器),tfs将这些移动作为删除和添加进行选择。

为了解决这个问题,我运行了一个监视更改的程序,当移动发生时,我将一个Workspace.PendRename与updateDisk设置为false。

除了tfs将删除添加为候选更改外,这种方法很好。

无论如何要删除此候选人更改?如果人们试图促进这些变化,就会引发问题。

通过使用Workspace.GetPendingChangesWithCandidates,我可以获得候选人更改,但似乎没有任何我可以用它来从列表中删除它。

在执行PendRename之前,我尝试将文件移回原来的位置(File.Move),然后将updateDisk设置为true来执行PendRename。这实际上适用于单个文件,但是当涉及文件夹等时会变得复杂。

我希望有一种简单的方法可以从列表中删除候选更改,或甚至为某些文件/文件夹完全禁用候选更改功能。我尝试将文件夹添加到.tfignore文件中,但这不起作用。

Promote Candidate Changes shows deletes even though files were renamed

1 个答案:

答案 0 :(得分:1)

在TFS中有两种移动文件。我为两个人都准备了一个样本:

本地工作区(窗口浏览器)直接移动/拖动文件

  1. 在磁盘我的工作区中,我将 2.PNG 移动到主分支     夹
  2. enter image description here

    1. 然后我们可以检查一下TFS在VS中检测到了什么。一个添加(在新的 在促进候选人更改中删除(在旧地方)。

      enter image description here

    2. 您需要同时检入添加和删除(首先提升)。最后 你会得到你想要的服务器和本地的。

    3. 直接在解决方案资源管理器中移动文件

      1. 在解决方案资源管理器中,我将 1.PNG 移动到 Main 右键单击文件夹,然后选择移动。
      2. enter image description here

        1. 您将直接获得重命名状态的待处理更改 没有任何促进候选人改变。

          enter image description here

        2. 然后我们可以检查我们的本地工作区,你会看到1.PNG是 即使您尚未签入更改,会自动删除工作区文件夹。最后检查待定 变化,一切都很好,干净。 enter image description here

        3. 回到你的问题:推广候选人更改显示删除即使文件已重命名

          TFS API应该使用上面的方式2。看看参数:

            

          updateDisk

               

          如果为true,则根据挂起的更改更新本地磁盘;   如果为false,磁盘未被修改且更改未被修改   确认

          因此,如果您将 updateDisk 设置为 false ,则1.PNG应该仍然存在于磁盘中,并且TFS会检测到它并添加以促进候选更改显示已删除。哪个符合你的截图。解决方案应该是将值从false更改为 true