public void AddProject(Project p) { TargetWorkspace.Projects.Add(p.ProjectGuid, p); var workspaceFile = TargetWorkspace.WorkspaceFile; var root = workspaceFile.SelectSingleNode("//Workspace"); XmlElement element = workspaceFile.CreateElement("Project"); var guidAttr = workspaceFile.CreateAttribute("GUID"); var pathAttr = workspaceFile.CreateAttribute("Path"); guidAttr.Value = p.ProjectGuid.ToString(); pathAttr.Value = p.ProjFilepath; element.Attributes.Append(guidAttr); element.Attributes.Append(pathAttr); TargetWorkspace.SaveWorkspace(); // Raise OnWorkspaceOpened event OnProjectAdded?.Invoke(this, new ProjectAddedEventArgs(p)); Tree.treeView1.Nodes[0].Nodes.Add(PopulateProjectNode(p)); }
public void RenameEditConflictUserMergeTest() { // 1. migrate a.txt -> a.txt string fileName = "a.txt"; MigrationItemStrings sourceFile = new MigrationItemStrings(fileName, "b.txt", TestEnvironment, true); MigrationItemStrings targetFile = new MigrationItemStrings(fileName, "b.txt", TestEnvironment, false); SourceAdapter.AddFile(sourceFile.LocalPath); RunAndValidate(); // 2. source system: a.txt -> b.txt int sourceChangeId = SourceAdapter.RenameItem(sourceFile.ServerPath, sourceFile.NewServerPath); // 3. target system: a.txt -> edit a.txt int editChangesetId = TargetAdapter.EditFile(targetFile.LocalPath); // 4. migrate Run(); // 5. resolve conflicts // 5.1 check if we have correct conflicts in db ConflictResolver conflictResolver = new ConflictResolver(Configuration); List <RTConflict> conflicts = conflictResolver.GetConflicts(); Assert.AreEqual(1, conflicts.Count, "There should be only 1 conflict"); VCNameSpaceContentConflictType namespaceConflict = new VCNameSpaceContentConflictType(); Assert.AreEqual(namespaceConflict.ReferenceName, conflicts[0].ConflictTypeReference.Value.ReferenceName, "It should be vc namespace content conflict"); // 5.2 user merge actions // 1) revert edit on a.txt // revert edit on a.txt PendEditToRevertFile(TargetWorkspace, targetFile, editChangesetId, editChangesetId - 1); TargetWorkspace.CheckIn(TargetWorkspace.GetPendingChanges(), "user: revert edit change on a.txt **NOMIGRATION**"); // 2) rename a.txt to b.txt on target system int targetChangeId = TargetAdapter.RenameItem(targetFile.ServerPath, targetFile.NewServerPath, "user: rename a.txt to b.txt **NOMIGRATION**"); int deltaChangeId = sourceChangeId; int miChangeId = targetChangeId; if (TestEnvironment.MigrationTestType == MigrationTestType.TwoWayRight) { deltaChangeId = editChangesetId; miChangeId = sourceChangeId; } Dictionary <string, string> dataFields = new Dictionary <string, string>(); dataFields.Add(VCContentConflictUserMergeChangeAction.MigrationInstructionChangeId, miChangeId.ToString()); dataFields.Add(VCContentConflictUserMergeChangeAction.DeltaTableChangeId, deltaChangeId.ToString()); foreach (RTConflict conflict in conflicts) { conflictResolver.TryResolveConflict(conflict, new VCContentConflictUserMergeChangeAction(), string.Format("$/;{0}", deltaChangeId), dataFields); } // 6. migrate Run(); // 7. validation // no remaining conflicts conflicts = conflictResolver.GetConflicts(); Assert.AreEqual(0, conflicts.Count, "There should be NO conflict"); // content match Assert.IsTrue(VerifyContents()); }
public void SaveWorkspace(string filename) { TargetWorkspace.SaveWorkspace(filename); }
public void SaveWorkspace() { TargetWorkspace.SaveWorkspace(); }