我正在使用TFS作为源代码控件在Visual Studio 2005中进行开发。每当我没有在解决方案上工作一段时间,我总是在解决方案资源管理器中做一个递归的Get Latest。
然而,这似乎并不总是奏效。如果我知道我没有最新版本的文件,甚至右键单击它(在解决方案资源管理器中),选择获取特定版本并勾选“强制获取”框不起作用。
我似乎需要打开TFS源代码控制窗口,并强制获取有问题的文件。
此外,解决方案资源管理器通常会在文件旁边显示“签出给其他人”图标,但是当我检查源代码管理时,它们根本就没有签出!
我想知道这些问题是否普遍存在,是否存在于VS2008中(我还没有在2008年将TFS用于大型项目),以及是否有任何修复或解决方法。
答案 0 :(得分:4)
1)我不会养成从Solution Explorer获取最新版本的习惯。即使它总是100%没有bug,但它比从命令行或Source Control Explorer中执行它要慢得多且不太可靠。 SlnExp必须抓取整个项目结构并发出非递归调用...伪算法:
parse sln file
foreach project in sln
TFS_GET makefile
parse makefile
enumerate sourcefiles[]
TFS_GET sourcefiles[]
loop
SCE不需要解析并发出一个递归的webservice调用。除了性能提升之外,这还要安全得多:
(a)构建时依赖项并不总是项目文件列表的一部分。可执行工具,第三方程序集和部署脚本都是常见示例。 SCE将下载它们,SlnExp不会。
(b)范围限定在重命名或移动文件时,调用特定文件的调用不会产生预期的结果。最好从磁盘中删除“旧”名称;在最坏的情况下,似乎没有任何事情发生。 (这可能是您报告的错误的原因)为了使文件真正重命名/移动与服务器同步,旧的&新路径必须都在Get。
的范围内2)多年来,SlnExp“字形”已经有很多错误修复。我不会声称VS2008 SP1在这方面是完美的,但它肯定有所改进。
答案 1 :(得分:0)
有时Get specific version
即使同时选中这两个复选框也无法获取最新文件。最常见的是您已对文件进行了更改,并且您希望通过重新获取最新版本来撤消这些更改。嗯......这就是Undo pending changes
的用途,而不是Get specific version
的目的。
如有疑问:
这是我刚才发现的最爱:
在Output
窗口中查看以下消息:
警告 - 无法刷新R:\ TFS-PROJECTS \ www.example.com \ ExampleMVC \示例MVC \示例MVC.csproj,因为您有待处理的编辑。
是的,严重消息出现在输出窗口中。没有其他通知!
挂起的更改中没有任何内容,也没有其他对话框消息告诉您明确请求的文件未被检索!是的 - 您只需运行Undo pending changes
并获取文件即可解决此问题。