53

我在 Team Server 2010 中使用 Visual Studio 2010 Pro,我的项目(显然)作为 repo 中的解决方案打开,但我应该将其打开为“网站”。我在编译期间发现了这一点,所以我搁置了我的新更改并从本地磁盘中删除了该项目,然后再次从源代码(这次是网站)打开了该项目,现在我无法取消搁置我的文件。

有没有办法解决这个问题?我炸了什么东西吗?我需要在服务器上进行维护吗?

在 SO #2332685 上找到了这个问题,但我不知道他在说什么缓存文件(我在 XP 上:\) 编辑:发布问题后找到这个链接,抱歉延迟研究,仍然没有解决我的问题

当然,我在任何地方都找不到 TF203015 的错误代码,所以也没有解决方案(因此我在标题中包含了数字,是吗?)

编辑:我可能应该提到这些文件一开始就没有被签入。这有关系吗?您可以搁置未检查的项目吗?那是我做错了吗?

编辑:WHAP - 找到了!!!对不存在的项目使用“撤消” ,因为它们在挂起的更改中显示为签入。

4

8 回答 8

57

即使我搁置了更改,我还是在尝试重新加载工作区时删除了文件。然后 VS2010 认为这些文件仍在等待保存。我不需要那个,所以我必须想办法“撤消”Pending Changes 中的更改。

然后我可以取消搁置。

它认为我有两个操作(取消搁置,提交添加)同时进行,我认为我只有一个操作(取消搁置)。

于 2010-05-11T21:44:38.667 回答
49

这与 OP 的问题无关

当您尝试将多个变更集从一个分支合并到另一个分支时,您可能会得到一个 TF203015,而没有应有的注意。

考虑一种情况,您有一个主干线和一个 DEV 分支。你从 MAIN 分支了 DEV,并且一直在努力开发 DEV 中的一个功能;随着您的进展,将工作检查回 DEV。现在快进一两个星期。您现在已完成功能并希望合并回 MAIN。

这就是我们的一位开发人员遇到此错误的地方。

他已经研究了几个星期的解决方案,并定期将变更集检查回 DEV,因此希望将一系列不连续的变更集合并回 MAIN。所以他选择了合并选项,选择了第一个变更集;合并没有问题,然后立即去合并下一个变更集;并且 bang TF203015,它在输出窗口中的测试非常无用;不兼容的挂起更改。

经过一番摆弄,我们现在意识到这里发生了什么;第一次合并在 MAIN 中为开发人员解决方案创建了一个待定更改。下一次合并尝试也是对同一解决方案的更改,这将要求 TFS “排队”对相同文件的第二组待处理更改。它不能这样做。

所以在这种情况下 TF203015 意味着;“目标分支已经对该变更集中的某些文件进行了挂起的更改。请在执行此合并操作之前解决并提交目标分支更改”

解决方案; 在每次合并操作之后,我们的开发人员测试 MAIN 的工作区并提交由合并引起的未决更改,然后返回 DEV 并重复。

实际上是明智和简单的,但被一个非常迟钝的错误消息所掩盖。

于 2012-03-06T14:38:24.077 回答
5

您可以使用包含该命令的 Team Foundation Server Power Tools 2011 年 3 月 ( http://msdn.microsoft.com/en-us/vstudio/bb980963.aspxtfpt unshelve ) 。

安装 Power Tools 后,打开 Visual Studio 命令提示符,切换到包含感兴趣项目的目录,然后执行tfpt unshelve命令。它将取消搁置并显示合并对话框,以便您解决冲突。

我相信这篇博客文章帮助我找到了这个解决方案:http: //fluentbytes.com/the-how-and-why-behind-tf203015-file-has-an-incompatible-change-while-unshelving-a-shelve-放

于 2011-06-29T20:46:03.007 回答
2

我遇到了同样的问题,但我在搁置更改后创建了一个分支,我想将这些更改搁置到新分支。

TFS 不能取消搁置到与创建搁架的路径不同的路径。

解决方案:我取消搁置回原始分支,然后我使用超越比较将原始分支的更改合并到新分支并签入。

于 2011-01-28T19:36:03.227 回答
2

也可能是在您在“测试”中创建文件夹并且想要从开发合并到测试之后,您没有将新创建的文件夹结构签入 TFS - 您也会/可以收到此错误消息。

因此,对于来自 google 并找到此页面的其他人,此消息错误可能与 SHELVESETS 没有任何关系。

于 2015-06-25T20:06:49.397 回答
1

这可能与 jcolebrand 的答案相同,但恐怕我发现那里的措辞有点深奥。如果我只是重复,真诚的道歉。

在我的场景中,显示该incompatible pending change消息是因为我试图回滚多个变更集,并且同一个文件受到多个变更集的影响。

就我而言,在所有更改都回滚之前,我不想提交。我相信如果我能够在回滚每个变更集后提交,就不会发生错误。

对我有用的方法如下:

  • 我选择一次回滚一个变更集。我发现使用命令行实际上是一种提供更多信息的方式,因为它列出了所有冲突,而我认为 VS UI 回滚只列出了第一个。
  • 在回滚变更集时,如果有incompatible pending change,我必须撤消工作区对受影响文件的待处理更改。
  • 当所有变更集都被回滚后,我不得不手动恢复经历过的文件incompatible pending change。大多数情况下,这可以通过获取文件的特定版本来实现(在所有错误签入开始之前的“最后已知良好”版本)。但是对于一些既有期望的更改又有不期望的更改的文件,我得到了“最后已知的好”并手动将好的更改应用到它。
于 2018-03-09T11:27:01.823 回答
0

此链接解决了我的问题:

https://blogs.infosupport.com/the-how-and-why-behind-tf203015-lt-file-gt-has-an-incompatible-change-while-unshelving-a-shelve-set/

原因是同一工作空间中的挂起更改会创建不兼容的更改。因此,撤消待处理的更改并尝试取消搁置。这应该可以解决问题。

于 2015-10-29T14:59:28.963 回答
0

如果您有两个分支 MAIN(目标)和 DEV(源),现在您要将 DEV 合并到 MAIN 中,那么您要从源合并的所有文件都不能比目标分支中的类似文件更旧。

例如:您的 DEV 分支中有一个更改的文件 test.cs,在 14.03.2016 更改。在您的 MAIN 分支中,您在 2016 年 3 月 15 日更改了 test.cs。所以目标比源文件更新,你有 TF203015。

解决方案:在 TFS Explorer 中导航到冲突文件并将其显式合并。TFS 将打开冲突管理器,您可以手动合并冲突。接下来,您可以合并选定的变更集。

备注:如果您有更多冲突,您必须导航到每个冲突文件并显式合并它,因此 TFS 会打开冲突管理器,您可以手动合并它。

于 2016-03-16T07:21:17.453 回答