为什么TFS的“获取最新版本”没有获取到最新版本?

185

TFS的获取最新版本为什么不可靠?

你会认为这个功能已经经过了充分的测试。

我所需要做的是获取指定版本,然后检查覆盖可写文件和覆盖所有文件两个选项。

是我的本地设置出了问题还是你也要这样做?


我看到的最愚蠢的事情是,“获取最新版本”即使本地文件因为任何原因被删除,也毫无作用。我本以为至少检查本地文件是否存在是一件非常明显的事情。但为什么它不能只是比较服务器上每个文件的时间戳与您上次获取的时间(可以存储在本地某处),这让我感到困惑。 - Dylan Nicholson
这应该是一条注释。 - Jimenemex
这是2020年9月。我和大多数人一样,来到这里是为了同一个原因。最新版本并不是最新的。我删除整个解决方案文件夹!关闭VS,清空bin,重新启动手机。从TFS源代码控制资源管理器中打开sln文件。但仍然会出现文件和项目无法工作/缺少文件的情况。 - Christian
19个回答

2
当我遇到这个问题,无法获取最新的版本和版本不匹配时,首先我会进行“获取特定版本”的操作,将其设置为更改集,然后放入1。这将从您的本地工作空间中删除所有文件(对于该项目、文件夹、文件等),并且TFS也会更新,以便知道您现在没有下载任何版本。然后您可以执行“获取最新”操作,就可以成功获取最新版本了。

1
这对我有效:
1. 退出Visual Studio
2. 打开命令窗口并导航到文件夹:"%localappdata%\Local\Microsoft\Team Foundation\"
3. 导航到每个版本的子文件夹,并删除子文件夹"cache"及其内容
4. 重新启动Visual Studio并连接到TFS。
5. 测试获取最新版本。

1
当您使用同一帐户从两台不同的机器上使用TFS时,可能会出现这种情况。如果是这样,您应该进行比较以查看更改的文件,然后检出它们,获取最新版本,然后撤消待处理的更改以删除检出状态。

1
每次出现这种情况(到目前为止),都是因为我在.csproj项目文件上有本地编辑待处理。那个文件似乎保留了项目中包含的所有文件的列表。由其他人添加的任何新文件都“未下载”,因为它们不在我的本地编辑(现在过时)的项目文件中。要获取所有文件,我首先必须撤消对.csproj文件的待处理更改,然后“获取所有”。我不必撤消其他更改,但我可能必须回去再次包括我的新文件(然后下一个人在尝试“获取所有”时遇到相同的问题...)。
我觉得当多个人同时添加新文件时存在一些根本性的笨拙问题。
(这是在.Net Framework项目中,也许其他框架如Core的行为不同)。

1
大多数开发人员抱怨Get Latest不能按照他们的预期工作,是因为他们是从解决方案资源管理器中执行Get Latest而不是从源代码控制资源管理器中执行。解决方案资源管理器只获取解决方案中包含的文件,并忽略可能被解决方案中的文件所需的任何内容,因此也忽略了源代码控制中的部分内容,而源代码控制资源管理器会将您的本地工作区与服务器上的存储库进行比较,以确定哪些文件是需要的。

我尝试了从Team Explorer中进行操作,但结果仍然相同。在我的情况下,我删除了文件夹并想要再次获取最新的副本,但没有成功。 - TheTechGuy
1
我不同意这个答案。如果您共享的项目被不同的解决方案使用,您必须在“解决方案资源管理器”中进行操作,否则它只会在特定的TFS路径上执行获取操作。 - Riegardt Steyn
如果不打算使用,为什么要从“解决方案资源管理器”中添加选项?当我点击“显示所有文件”时,文件确实存在,但并未包含在我的项目中。奇怪的是,我甚至不是添加它的人。 - mokumaxCraig
我尝试从Solution Controller获取最新的内容,然后从TFS中打开我的文件浏览器并作为sln文件打开。删除整个sln文件夹,包括隐藏的tfs .vs文件夹?是的,我也试过了 :) - Christian

1
在我的情况下,即使勾选了两个复选框并撤销了所有待处理更改,也无法获取特定版本。
检查工作区。编辑当前工作区。检查所有路径。 解决方案路径不正确,指向已删除的文件夹。
修复路径后,最新版本可以正常工作。

0

想要补充的是,TFS MSBuild不支持文件夹中的特殊字符,例如“@”。

过去我曾经遇到过这样的问题。我们有一个项目文件夹名为External@Project1。

我们创建了一个TFS Build定义来运行自定义的msbuild文件,但当工作区获取最新版本时,External@Project1文件夹中没有任何内容被获取。似乎TFS获取失败了,但并没有显示任何错误信息。

经过一些试验和误差,将文件夹重命名为_Project1后,我们就成功获取了文件夹(_Project1)中的文件。


无论使用TFS或其他版本控制工具,项目文件夹名称中不应包含特殊字符! - Riegardt Steyn
@ 不是特殊字符,% 也不是,等等。这些字符被视为与“普通”字符不同,只是因为微软的懒惰所致。 - Kevin Whitefoot

0

工具: TFS Power Tools

Source: http://dennymichael.net/2013/03/19/tfs-scorch/

命令: tfpt scorch /recursive /deletes C:\工作区或文件夹位置

这将弹出一个对话框,询问您删除或下载文件列表。根据需要选择或取消选择文件,然后按“确定”。在网格中显示(复选框、文件名、文件操作、文件路径)。

原因: TFS只会与工作区中的项目进行比较。如果在工作区之外进行了更改,则TFS将不知道它们。

希望有人会发现这个有用。我在删除几个位于不同位置的文件夹后找到了这篇文章。由于不记得删除了哪些文件夹,所以无法使用通常的强制获取/替换选项。


0

我遇到了同样的问题:

我的开发服务器出现故障并进行了恢复,但是恢复的信息是几天前的。

TFS已更新,所有文件都是最新的,但实际上我的文件几天前就是正确的!

我所做的一切都没有帮助。获取最新版本也没有得到最新版本。

最后,我从一个月前获取了特定版本。我的文件相应地更新,然后我获取了最新版本。

它奏效了。文件已经更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接