获取特定版本的TFS API

3

我写了一些代码来获取选定项目的最新版本。当我运行它时,它可以正常工作。但是如果我删除文件夹并再次运行它,它会显示“所有文件均为最新”。

我使用Visual Studio TFS源控制和获取特定版本解决了这个问题。如何在C#项目中使用TFS API实现这一功能?

我的代码:

WorkingFolder workfolder = new WorkingFolder(ServerFolder, LocalFolder);
workspace.CreateMapping(workfolder);

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite);

编辑:

我添加了这段代码并检查了返回值“getStatus”。

GetStatus getStatus = workspace.Get(VersionSpec.Latest,  GetOptions.Overwrite);
if (getStatus.NoActionNeeded)
// create new workspace and use same codes in "My code"
3个回答

1

我还没有尝试过这个,但你能否将GetOptions.Overwrite与GetOptions.GetAll结合起来使用?

workspace.Get(VersionSpec.Latest, GetOptions.Overwrite | GetOptions.GetAll)

从命令行来看,我会在tf get命令中使用/force选项。我认为GetOptions.GetAll标志可能等同于/force选项。


谢谢,我试了一下。我在我的代码中加入了"GetOptions.GetAll",当我点击获取最新版本的按钮时,程序会下载工作区中的所有项目。但我只想获取树形视图中选择的项目。 - mozkarakoc

1

如果您在2012年使用本地工作区,则GetLatest未下载已删除文件的问题将不会成为问题。但是,在“服务器”工作区中,TFS仅知道您已告诉TFS有关本地磁盘更改的内容。在这种情况下,由于TFS服务器不知道您删除的文件,因此它不会知道它们丢失并且不会重新下载它们。

如果您想在这种情况下获取它们,则必须像Dan提到的那样传递force选项。然而,强制选项并不是始终要传递的好选择。它将强制重新下载所有内容,这通常不是您想要做的事情。


1
谢谢Taylor,你的解释非常详细。我使用GetStatus类解决了问题。在调用workspace.Get()方法后,我检查返回值,如果值为"NoActionNeeded",则获取所有内容。再次感谢。 - mozkarakoc

0

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