TF203015 Item $ / path / file具有不兼容的挂起更改。虽然试图取消搁置

时间:2010-05-10 16:52:50

标签: visual-studio-2010 tfs tfs2010 unshelve

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

有什么方法可以解决这个问题吗?我吹了一些东西吗?我是否需要在服务器上进行维护?

我发现this question on SO #2332685但我不知道他在说什么缓存文件(我在XP上:\) 编辑:Found this link after posting the question, sorry for the delay in researching, still didn't fix my problem

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

编辑: 我应该提一下,这些文件从未在第一时间签到。那有关系吗?你可以搁置一件未经检查的物品吗?那是我做错了吗?

编辑: 什么 - 发现它! Use "Undo"关于不存在的项目,因为它们作为签到显示在待处理的更改中。

8 个答案:

答案 0 :(得分:49)

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

然后我可以取消搁置。

它认为我有两个ops(unshelve,commit-for-add)同时进行,我认为我只有一个op(unshelve)。

答案 1 :(得分:43)

对于OP的问题,这是一个轻微的问题

当您尝试将多个变更集从一个分支批量合并到另一个分支时,您可以获得TF203015。

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

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

他已经在一个解决方案上工作了几周,并且定期将变更集检入DEV,因此希望将一系列不连续的变更集合并回MAIN。 所以他选择合并选项,选择第一个变更集;合并没有问题,然后立即合并下一个变更集;和爆炸TF203015,它在输出窗口中的无用测试;不兼容的待定更改。

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

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

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

实际上是明智而简单的,但却被一个非常迟钝的错误信息掩盖了。

答案 2 :(得分:5)

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

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

我赞同这篇博文,帮助我找到这个解决方案:http://fluentbytes.com/the-how-and-why-behind-tf203015-file-has-an-incompatible-change-while-unshelving-a-shelve-set

答案 3 :(得分:2)

我遇到了同样的问题,但是我搁置了我的更改之后创建了一个分支,我想取消对新分支的更改。

TFS无法取消支持与创建工具架的路径不同的路径。

解决方案:我没有回到原始分支,然后我使用了超越比较来将我原来分支的更改合并到新分支并签入。

答案 4 :(得分:2)

也可能是在创建一个文件夹之后说“"测试"并且你想从dev合并到test,你没有将新创建的文件夹结构签入TFS - 你也会/也会收到此错误消息。

因此,此消息错误可能与SHELVESETS以及来自谷歌和查找此页面的其他人无关。

答案 5 :(得分:1)

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

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

在我的情况下,我不想在所有更改都已回滚之前提交。我相信如果我在回滚每个变更集之后能够提交,那么错误就不会发生。

对我有用的方法如下:

  • 我选择一次回滚一个变更集。我发现使用command line实际上是一种更具信息性的方式,因为它列出了所有冲突,而我认为VS UI回滚只列出了第一个。
  • 在回滚变更集时,如果有incompatible pending change,我必须撤消我的工作区对受影响文件的挂起更改。
  • 当所有变更集都已回滚时,我必须手动还原经历过incompatible pending change的文件。大多数情况下,这可以通过获取文件的特定版本("最后知道好的"版本,然后开始所有坏签到)来实现。但是对于一些既有所需的变化又有不希望的变化的文件,我得到了#34;最后知道好的"并手动将好的更改应用到它。

答案 6 :(得分:0)

此链接解决了我的问题:

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

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

答案 7 :(得分:0)

如果你有两个分支MAIN(目标)和DEV(源),现在你想要合并DEV到MAIN,那么你想要从你的源合并的所有文件,必须不比目标分支中的类似文件旧。 / p>

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

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

备注:如果您有更多冲突,则必须导航到每个冲突文件并将其明确合并,以便TFS打开冲突管理器,您可以手动合并它。