TFS服务器签入错误-找不到文件-服务器相关和命令行

时间:2019-02-08 20:38:58

标签: tfs tfs2015 tfvc

这与问题有关,

TFS checkin error - could not find file

“在签入项目时出现错误:

Could not find file 'C\blah blah blah'.

我觉得这可能是我删除的旧项目中的文件。

我尝试删除TFS连接和工作区。

解决方案是:

当TFS上演了某些更改,而该更改在文件系统上不再存在时,将发生这种情况。例如,如果您在Visual Studio中添加了一些文件(会将它们添加到更改列表中),则直接从文件系统中将其删除,然后尝试检入更改,它将抱怨找不到文件。

要从列表中删除这些更改,可以打开“源代码管理资源管理器”(查看> 其他Windows > 源代码管理资源管理器),然后打开删除不存在的文件,或右键单击有问题的文件,然后单击撤消待处理的更改

您还可以从Team Explorer的“ Pending Changes”面板中撤消这些特定更改。

关注问题:

所以我的问题是 我如何在TFS服务器中进行与此等效的操作?它在我们的团队中连续发生多次。 这可以在人的桌面上运行,但是TFS服务器中的等效命令行是什么,我可以在构建步骤中将其合并吗?

2 个答案:

答案 0 :(得分:0)

您以错误的方式从TFS删除文件。 TFS服务器不知道您的本地文件系统,如果您从本地文件夹中删除了一个文件,该文件仍然存在于TFS上。

这是问题和错误的原因。如果开发人员想要删除文件,并且他从本地文件夹中删除了该文件,然后收到错误Could not find file并解决该错误,则他执行“撤消待处理的更改”,因此该文件仍然存在于TFS上,并且当另一个开发人员看到该文件在他的系统中也已在本地删除,并且他还将在签入中得到错误。

因此,如果开发人员想要从TFS中删除文件,则需要右键单击该文件,然后单击“删除”和“签入”。如果他已经在本地将其删除,则可以执行“删除不存在的文件”和“签入”。现在每个开发人员执行“获取最新信息”时都不会获取文件。

您还可以在delete命令中使用tf.exe命令行删除文件:

tf delete [/lock:(none|checkin|checkout)] [/recursive] [/login:username,[password]] itemspec

在构建期间,您可以添加命令行/ Power Shell任务并运行tf.exe

答案 1 :(得分:0)

您可以使用以下命令从命令行撤消其他人的更改:

tf vc undo /workspace:workspacename;owner $/project/path/to/file

您可以通过以下方式获取此信息:

tf vc status $/project/path/to/file /user:*

这允许您从服务器中删除待处理的更改,尽管它不会导致文件在相关开发人员的工作站上恢复。

这两个命令都提供了/recursive选项,可以一次撤消特定路径下的多个文件。

如果您使用的是Visual Studio 2015 or earlier, then you can use the TFS Power Tools to add a "Find by status" option to the Visual Studio Source Control Explorer。不幸的是,这还没有进入Visual Studio 2017,并且没有用于Visual Studio 2017的TFS Power Tools。

TFS Sidekicks offer a Status Sidekick screen,可让您查询当前检出的所有文件以在服务器工作区中进行编辑,并允许您集中撤消它们。

enter image description here

完全预防问题

要完全避免该问题,您可以选择几种方法。您可以切换到本地工作区,而不是服务器工作区。这些自动检测本地更改,并且不会在TFS服务器本身上注册更改。 Read more about local workspaces

您可以从tf vc命令行执行删除操作,而不必使用其他工具来删除文件和文件夹,例如:

tf vc delete $/project/path/to/file

delete命令还具有/recursive选项。使用此命令不仅将更新您的本地文件夹,还将更新服务器工作区。