撤销 TFS 的签出操作

4

有没有办法在C#中以编程方式撤销检出?

文件是以编程方式检出的,但如果代码在执行时未更改,则希望撤消检出。

public static void CheckOutFromTFS(string fileName)
{
    var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName);
    if (workspaceInfo == null)
        return;

    var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
    var workspace = workspaceInfo.GetWorkspace(server);
    workspace.PendEdit(fileName);
}

上面的代码是我的结账代码。

4
你尝试过 workspace.Undo() 吗? - Suresh Kumar Veluswamy
非常好用!谢谢 :) 你能把它作为答案提供吗,这样问题就可以被标记为已回答了。 - Matthijs
2个回答

7

1
我用以下方式完成了这个任务:

private const string ConstTfsServerUri = @"http://YourTfsAddress:8080/tfs/";
 #region Undo
    public async Task<bool> UndoPendingChangesAsync(string path)
    {
        return await Task.Run(() => UndoPendingChanges(path));
    }

    private bool UndoPendingChanges(string path)
    {
        using (var tfs = TeamFoundationServerFactory.GetServer(ConstTfsServerUri))
        {
            tfs.Authenticate();
            // Create a new workspace for the currently authenticated user.   
            int res = 0;
            try
            {
                var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(ConstDefaultFlowsTfsPath);
                var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
                Workspace workspace = workspaceInfo.GetWorkspace(server);
                res = workspace.Undo(path, RecursionType.Full);

            }
            catch (Exception ex)
            {
                UIHelper.Instance.RunOnUiThread(() => MessageBox.Show(ex.Message));
            }

            return res == 1;//undo has been done succesfully
        }
    }

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