我正在使用VS2008和VS2010与TFS合作,TFS集合中有多个项目。
我将TFS根目录映射到本地驱动器以保留TFS文件夹结构,并获取了几个子文件夹的最新版本。
我还下载了一个不需要的文件夹,所以我删除了本地文件夹内容,但现在在TFS中,我看到该文件夹为黑色且“已获取最新版”。如何告诉TFS我先前已经将一个文件夹删除了?
我正在使用VS2008和VS2010与TFS合作,TFS集合中有多个项目。
我将TFS根目录映射到本地驱动器以保留TFS文件夹结构,并获取了几个子文件夹的最新版本。
我还下载了一个不需要的文件夹,所以我删除了本地文件夹内容,但现在在TFS中,我看到该文件夹为黑色且“已获取最新版”。如何告诉TFS我先前已经将一个文件夹删除了?
我认为问题在于你和TFS对于“最新版本”的理解不一致。 在TFS中,“最新版本”指的是自你上次获取最新版本以来服务器上没有发生任何更改。它并不意味着硬盘上的内容与服务器上的最新版本相同。 因此,TFS显示了它应该显示的内容,请参见此问题以了解更多信息:为什么TFS Get Latest不能获取最新版本?
对于你不想在本地硬盘上保存的服务器文件夹,建议使用“隐藏”功能,如MBulava所述。(右键单击文件夹-> 隐藏)。如果你不希望在硬盘上保存某个文件夹,我推荐使用这种方法,因为它不会被下载,除非你解除隐藏,而且它将以灰色显示,并标注为“未下载”。
如果你想查看硬盘上的内容与服务器版本之间的差异,可以使用“比较文件夹”功能。它会显示硬盘上的文件夹已被删除。
如果你想将文件夹映射到灰色(就像你没有下载的其他文件夹一样),可以将其隐藏,然后解除隐藏,但在现在不下载时回答“否”。这与一开始不下载文件夹的效果相同。
Martin Woodward写了一篇很酷的博客文章TFS顶级提示#11-从本地文件系统中删除源代码控制文件,解决了这个问题,而不必使用cloaking方法。
您需要使用获取特定版本(Get Specific Version),将版本类型更改为Changeset,并指定1作为Changeset编号。他的博客文章详细介绍了为什么这样做可以解决该问题。我已经验证了在Visual Studio 2013、2015和2017的Team Explorer中的此行为。
更新:
如果您有一堆要处理的文件夹,可以使用以下命令行,将folderName替换为Client itemspec或等效的Server itemspec:
tf.exe get folderName /v:1 /recursive
Mbulava的建议是使用“隐身衣”将文件和/或文件夹保留在TFS服务器上,但会从您的本地版本和“获取最新版本”请求中删除文件/文件夹。
如果您已从本地目录中删除文件,并且想让这些更改出现在服务器上,则需要转到TFS目录,选择要删除的文件,右键单击并删除文件夹。然后,您需要将待删除更改“签入”到TFS服务器中。 TFS服务器将随后删除文件/文件夹。