TFS版本控制 - 文件被删除,添加 - 我们如何告诉TFS这是一个移动?

时间:2011-08-25 19:43:06

标签: visual-studio version-control tfs refactoring resharper

我们正在进行一些重大的重构,并且在此过程中我们正在移动大量文件。我们使用ReSharper使这(相对)无痛,因为它在我们移动文件时更新所有用途 - 甚至是不同的项目。所以一切都很棒。

除了我们今天刚刚发现ReSharper会告诉TFS删除旧位置的文件,然后在新位置插入新文件。我们如何告诉TFS这个删除/插入实际上是一个移动?

3 个答案:

答案 0 :(得分:4)

简短回答:你没有。

长答案:除非您想要完全管理源代码管理,否则不会这样做。

从TFS的角度来看,新位置的文件是完全不同的文件。它甚至在数据库服务器中具有不同的ID。

现在你可以在你的TFS数据库中进行探索,并尝试手动更新文件ID关联。但这完全搞砸了你自己的可能性极高......除非你是TFS的主要开发人员之一,他非常熟悉产品的后端。在这种情况下,你不会问这个问题。 ;)

稍微偏离主题的项目:你应该联系jetbrains并告诉他们解决这个问题。

答案 1 :(得分:4)

“tf rename”将告诉TFS文件已移动。

http://msdn.microsoft.com/en-us/library/a79bz90w.aspx

如果您在VS中并将文件从一个文件夹移动到另一个文件夹,则可以看到TFS挂起重命名。您还可以将文件从一个文件夹移动到另一个文件夹,然后重命名该文件。 TFS会重命名。

显然当resharper正在移动文件时,它不会在VS项目系统中使用move和rename apis,或者我希望这会“正常工作”。

答案 2 :(得分:4)

我遇到了类似的情况,我想在项目之间移动文件,我想让Resharper做尽可能多的工作。以下是我最终要做的步骤:

  1. 在Resharper中移动文件。这将对目标项目文件进行适当的更改。
  2. 关闭解决方案或停用Resharper。
  3. 撤消TFS中的删除/添加。
  4. 在TFS中移动文件。
  5. 确保已移动的文件不再位于源项目中。
  6. 重新加载解决方案或重新启用Resharper。
  7. 使用Resharper进行任何命名空间更改。
  8. 显然,一次可以使用多个文件。这是一个痛苦,但TFS最终得到了正确的改变,Resharper负责改变参考文献。