当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
答案 0 :(得分:1)
在TFS中有两种移动文件。我为两个人都准备了一个样本:
然后我们可以检查一下TFS在VS中检测到了什么。一个添加(在新的 在促进候选人更改中删除(在旧地方)。
您需要同时检入添加和删除(首先提升)。最后 你会得到你想要的服务器和本地的。
您将直接获得重命名状态的待处理更改 没有任何促进候选人改变。
然后我们可以检查我们的本地工作区,你会看到1.PNG是 即使您尚未签入更改,会自动删除工作区文件夹。最后检查待定 变化,一切都很好,干净。
回到你的问题:推广候选人更改显示删除即使文件已重命名。
TFS API应该使用上面的方式2。看看参数:
updateDisk
如果为true,则根据挂起的更改更新本地磁盘; 如果为false,磁盘未被修改且更改未被修改 确认强>
因此,如果您将 updateDisk 设置为 false ,则1.PNG应该仍然存在于磁盘中,并且TFS会检测到它并添加以促进候选更改显示已删除。哪个符合你的截图。解决方案应该是将值从false更改为 true 。