在搜索谷歌几个小时后,我找到了我的问题的答案。我知道这篇Undo checkout TFS帖子回答了我的问题,但它并没有回答我的所有问题。我想实现与帖子提出的相同目标。如果该文件中没有任何修改,如何仅恢复已签出的文件?我的问题的答案应该不会太难回答。
所以我正在做的是从服务器复制文件并在我的本地工作区中覆盖它们。我正在检查所有正在复制的文件。但是,如果复制的文件无论如何都没有被修改(服务器文件和目标文件完全相同),我想撤消该文件的签出。
我知道我要使用 workspace.Undo() 方法,这位先生说它对他有用。但是他没有说明他是如何实现它的。
这是我在链接帮助下获得的代码:
public static void CheckOutFromTFS(string filepath)
{
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(filepath);
if (workspaceInfo == null)
{
return;
}
var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
var workspace = workspaceInfo.GetWorkspace(server);
workspace.PendEdit(filepath);
}
给出的答案是使用 workspace.Undo() 方法。我是否像这样将此方法添加为 CheckOutFromTFS() 的最后一行?
public static void CheckOutFromTFS(string filepath)
{
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(filepath);
if (workspaceInfo == null)
{
return;
}
var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
var workspace = workspaceInfo.GetWorkspace(server);
workspace.PendEdit(filepath);
workspace.Undo();
}
还是做的不同?我不确定这个 Undo() 是否只会在没有更改的情况下恢复文件,或者只是完全恢复结帐并使 PendEdit() 无用。有人可以帮我澄清一下吗?