Пример #1
0
        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));
        }
Пример #2
0
        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());
        }
Пример #3
0
 public void SaveWorkspace(string filename)
 {
     TargetWorkspace.SaveWorkspace(filename);
 }
Пример #4
0
 public void SaveWorkspace()
 {
     TargetWorkspace.SaveWorkspace();
 }