Is there any way to undo a checkout programmatically in C#?
The files get checked out programmatically, but if the code does not change on execution, I want the checkout to be undone.
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); }
The above code is my checkout code.
I've done this task in following way:
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 } }