Exemple #1
0
        private static void ProcessFileChanges(IResource repository, ResourceProxy csProxy, XmlElement node, int revision)
        {
            foreach (XmlElement pathNode in node.SelectNodes("paths/path"))
            {
                string action = pathNode.GetAttribute("action");
                string path   = pathNode.InnerText;

                int    pos        = path.LastIndexOf('/');
                string folderName = path.Substring(0, pos);
                string fileName   = path.Substring(pos + 1);

                IResource folder = FindOrCreateFolder(repository, folderName);
                csProxy.AddLink(Props.AffectsFolder, folder);

                FileChange fileChange = FileChange.Create();
                fileChange.Name          = fileName;
                fileChange.AffectsFolder = folder;
                switch (action)
                {
                case "A":
                    fileChange.ChangeType = "add";
                    break;

                case "D":
                    fileChange.ChangeType = "delete";
                    break;

                case "R":
                    fileChange.ChangeType = "replace";
                    break;

                default:
                    fileChange.ChangeType = "change";
                    break;
                }
                fileChange.Revision = revision;
                fileChange.Save();

                csProxy.AddLink(Props.Change, fileChange.Resource);
            }
        }
Exemple #2
0
        private static void SaveChangeSet(IResource repository, IResource changeSet, ChangeSetDetails details)
        {
            if (changeSet.HasProp(Props.Change))
            {
                return;
            }

            ResourceProxy proxy = new ResourceProxy(changeSet);

            proxy.BeginUpdate();

            SetChangeSetDescription(proxy, details.Description);

            foreach (var fileChangeData in details.FileChanges)
            {
                int    pos        = fileChangeData.Path.LastIndexOf('/');
                string folderName = fileChangeData.Path.Substring(0, pos);
                string fileName   = fileChangeData.Path.Substring(pos + 1);

                IResource folder = FindOrCreateFolder(repository, folderName);
                proxy.AddLink(Props.AffectsFolder, folder);

                var fileChange = FileChange.Create();
                fileChange.Name          = fileName;
                fileChange.AffectsFolder = folder;
                fileChange.ChangeType    = fileChangeData.ChangeType;
                fileChange.Revision      = fileChangeData.Revision;
                fileChange.Diff          = fileChangeData.Diff;
                fileChange.Binary        = fileChangeData.Binary;
                fileChange.Save();

                proxy.AddLink(Props.Change, fileChange.Resource);
            }

            proxy.EndUpdate();
            Core.TextIndexManager.QueryIndexing(proxy.Resource.Id);
        }