2012-12-24 48 views
4

我希望能够询问TfsTeamProjectCollection并确定服务器上是否有更新版本的文件。我希望能够在不实际获取文件的情况下做到这一点。如何检查本地文件是否是tfs中的最新版本?

这可能在某处吗?我已经做了一些抓挠,到目前为止绘制空白。

谢谢。

回答

2

最简单的方法是在工作区版本和最新版本之间QueryHistory;如果它们不同,则在服务器上存在更新的最新版本。例如:

versionControlServer.QueryHistory(
    serverPath, 
    VersionSpec.Latest, 
    0, 
    RecursionType.Full, 
    new WorkspaceVersionSpec(workspace), 
    versionFrom, 
    null, 
    Int32.MaxValue, 
    true, 
    true); 
0

这是另一种检查给定文件是否最新的方法。

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具有六个可能的成员的值。每个都有一个目的。

既然你不需要下载的文件,

我们将使用成员值PreviewExecutes a get without modifying the disk.

3)Get操作返回GetStatus对象,表示状态一个Workspace.Get操作。

这包含有关在处理Get操作时发生了多少操作,冲突,错误等信息。

GetStatus对象有许多属性。我们使用名为NoActionNeeded的属性,该属性获取一个标志,指示是否未发生故障和未发生操作。

如果未发生任何操作或错误,标志值将为为真。即该文件已经是最新版本。否则,该标志将为False这意味着该文件不是TFS中提供的最新版本。

相关问题