如何绕过有关已删除目录的字符路径限制的 TFS 错误? (Visual Studio 2013)

How to bypass TFS error regarding character path limits for directories that have been removed? (Visual Studio 2013)

我正在使用 TFS 对我的 C# ASP.NET MVC 项目进行源代码控制。我有一个名为 ProjectA 的项目,它有两个分支(即 ProjectAProjectA-Dev。)ProjectA 是我的生产分支,ProjectA-Dev 是我的开发分支. ProjectA-Dev 包含我的项目即将发布的大量新代码。

我正处于需要将生产中的任何更改合并到开发中的阶段。当我在 ProjectA-Dev 中开发我的下一个版本时,我的生产版本收到了一些错误修复。我想将添加的错误修复合并到我的 ProjectA-Dev 分支中。

为了将 ProjectA 合并到 ProjectA-dev,我打开了“Solution Control Explorer”,右键单击 ProjectA,然后单击“Branching and Merging”,然后单击“Merge”。

在源代码管理合并向导中,我在源代码分支中选择了 $/TFS/ProjectA。然后我在目标分支中选择 $/TFS/ProjectA-Dev 。然后我点击“下一步”,选择“最新版本”,然后点击“完成”。

这个过程运行了大约 10 秒,然后它给我这个错误

这个错误完全有道理。然而,令我困惑的是 node_modules 目录在任何一个分支上都不存在。另外,我从本地项目中删除了文件夹 node_modules

我还应该注意到 node_modules 曾经在 TFS 中,但几周前我使用变更集 20000 从 TFS 中删除了它。但是,今天,在最新版本中,文件夹 node_modules 在 TFS 上不存在。我还通过门户网站验证了同样的事情。

我尝试通过删除此文件夹的内容来在本地删除 TFS 缓存 %localappdata%\Microsoft\Team Foundation.0\Cache,但问题仍然存在。

如何绕过此错误并正确合并这些更改?

TFS 可能不知道您更改了什么(删除了 node_modules 个文件)以及在分支 projectA 中的长变更集期间更改是否与分支相关。

您可以找到您首先删除 node_modules 个文件的特定变更集。然后只需使用 tf merge command/discard 选项。

/discard Does not perform the merge operation, but updates the merge history to track that the merge occurred. This discards a changeset from being used for a particular merge.

示例命令:

tf merge $/Project/SourceBranch $/Project/TargetBranch /discard /recursive /version:C56693~C56693

它丢弃了变更集 56693。版本是从 ~ 到,因此您可以一次丢弃多个变更集。在您的情况下,丢弃变更集,直到特定变更集 node_modules 文件被删除。命令完成后,您仍然需要检查合并

在此之后再次执行正常的合并操作。

我终于在 运行 之后开始工作了 tf destroy "$/MyPath/To/Project/node_module"