【发布时间】:2017-07-28 10:36:36
【问题描述】:
当 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
【问题讨论】:
-
您使用的是本地工作空间吗?本地工作空间将监视磁盘上的更改,因此如果您将文件从工作空间内的一个目录移动到工作空间内的另一个目录,则会检测到移动。 TFS 中的移动是删除+添加,因此您描述的行为是有意的。如果您不希望工作区监视磁盘上的更改,请改用服务器工作区。本地和服务器工作区之间存在一些差异,如下所述:visualstudio.com/en-us/docs/tfvc/…
-
Sander,在 TFS 中,移动不是添加和删除,这会丢失所有文件历史记录。 TFS 中的移动称为重命名。
-
Patrick,工作空间内的文件在 TFS 不知情的情况下被移动,因此 TFS 将这些文件作为删除和添加进行选择。我希望 TFS 明白它实际上是一个移动/重命名。
-
@Zenix 这是正确的现象,当在源代码管理资源管理器之外进行重命名时,更改将被检测为两个单独的操作,一个删除 和 一加。