我希望能够询问TfsTeamProjectCollection并确定服务器上是否有更新版本的文件。我希望能够在不实际获取文件的情况下做到这一点。如何检查本地文件是否是tfs中的最新版本?
这可能在某处吗?我已经做了一些抓挠,到目前为止绘制空白。
谢谢。
我希望能够询问TfsTeamProjectCollection并确定服务器上是否有更新版本的文件。我希望能够在不实际获取文件的情况下做到这一点。如何检查本地文件是否是tfs中的最新版本?
这可能在某处吗?我已经做了一些抓挠,到目前为止绘制空白。
谢谢。
最简单的方法是在工作区版本和最新版本之间QueryHistory
;如果它们不同,则在服务器上存在更新的最新版本。例如:
versionControlServer.QueryHistory(
serverPath,
VersionSpec.Latest,
0,
RecursionType.Full,
new WorkspaceVersionSpec(workspace),
versionFrom,
null,
Int32.MaxValue,
true,
true);
这是另一种检查给定文件是否最新的方法。
string file_path = @"your_file_path";
WorkspaceInfo info = Workstation.Current.GetLocalWorkspaceInfo(file_path);
Workspace ws = info.GetWorkspace(new TfsTeamProjectCollection(info.ServerUri));
GetStatus status = ws.Get(new GetRequest(
new ItemSpec (file_path, RecursionType.Full),
VersionSpec.Latest),
GetOptions.Preview);
if(status.NoActionNeeded)
MessegeBox.Show("Latest");
else
MessegeBox.Show("Not Latest");
STEPS
1)我们需要得到一个包含文件路径Workspace
。我们使用
Workstation.GetLocalWorkspaceInfo Method (String)
得到WorkspaceInfo
对象包含包含指定文件的工作空间的特性。
我们可以利用这个WorkspaceInfo
目的是通过使用
WorkspaceInfo.GetWorkspace Method (TfsTeamProjectCollection)
2)现在我们需要与工作空间对象进行Get
操作以获取该工作区的实例。
Workspace.Get Method (GetRequest[], GetOptions)
第二个参数,GetOptions
具有六个可能的成员的值。每个都有一个目的。
既然你不需要下载的文件,
我们将使用成员值Preview
这Executes a get without modifying the disk.
3)的Get
操作返回GetStatus
对象,表示状态一个Workspace.Get
操作。
这包含有关在处理Get
操作时发生了多少操作,冲突,错误等信息。
GetStatus
对象有许多属性。我们使用名为NoActionNeeded
的属性,该属性获取一个标志,指示是否未发生故障和未发生操作。
如果未发生任何操作或错误,标志值将为为真。即该文件已经是最新版本。否则,该标志将为False这意味着该文件不是TFS中提供的最新版本。