如何使TFS反映文件系统更改,而不是解决方案资源管理器

时间:2014-09-15 09:03:27

标签: visual-studio-2012 tfs

我对TFS很新,来自CVS和Subversion背景,有一些Git和Mercurial影响。我发现我经常与它斗争,因为它没有将文件系统上的工作副本的状态与版本控制中的状态进行比较。相反,它会根据您在解决方案资源管理器和Visual Studio中所做的事情向您展示认为是文件系统状态的内容。

例如,如果您在解决方案资源管理器中删除文件,稍后在其他工具(通常是Windows资源管理器)中替换该文件,TFS将坚持删除该文件。此外,它将检测'替换并将其建议为“添加”#39;但它不会让你推广它,因为“添加'与删除'冲突。没有简单的方法可以解决此问题,因为您无法撤消删除'要么 - 您可以撤消'删除'如果文件在文件系统中仍然存在!

在我看来,这是一场灾难。为什么它不能忘记您之前在解决方案资源管理器中所做的事情并向您显示当前状态:即文件仅仅已更改(或保持不变。)

同样,如果您在Visual Studio中编辑文件并随后对其进行编辑以撤消这些更改,TFS会坚持该文件已被修改,有时即使没有有效更改 - 提交的修订版本与新版本相同在你改变之后。

有没有办法打破此链接并禁用在Visual Studio中跟踪您的操作 - 即,当您刷新“等待更改”时,它会查看文件系统上工作副本的当前状态和头部修正版差异?

2 个答案:

答案 0 :(得分:3)

如果你正在使用TFS 2012,你可以use a local workspace:这使用本地文件系统的方式更类似于SVN,尽管它可能无法以各种方式匹配它。

请注意,如果您的工作区中有超过50,000个项目this is not advisable due to performance considerations

答案 1 :(得分:1)

这与解决方案资源管理器本身没有任何关系。 Team Foundation Server在“服务器工作区”模式下运行时是checkout/edit/checkin类型的源控制系统。这意味着您必须明确告知版本控制系统您正在进行更改。这允许它扩展到非常大的存储库,因为它不必扫描文件系统,如编辑/合并/提交(如TFS“本地工作空间”或Subversion),或者像分布式版本控制系统(如Git)会。

Visual Studio或Eclipse将与源代码控制系统进行交互,因此当您开始编辑(或删除等)文件时,它会通知TFS您的更改,因此您无需手动进行这些更改。如果您与其他程序(Windows资源管理器,记事本等)的工作副本进行交互,则需要使用tf命令行客户端或源代码管理资源管理器手动删除这些更改。

如果您发现这令人沮丧并且不需要TFS服务器工作区的扩展功能,那么您可以使用TFS Local Workspace,它将扫描文件系统并注意您在IDE之外所做的任何更改。或者,当然,您可以使用Visual Studio和TFS 2013中内置的Git支持。