Пример #1
0
 public static void MergeRecords(FileResolveRecord Record1, FileResolveRecord Record2)
 {
     if (Record1.LocalFilePath == null)
     {
         Record1.LocalFilePath = Record2.LocalFilePath;
     }
     if (Record1.FromFileSpec == null)
     {
         Record1.FromFileSpec = Record2.FromFileSpec;
     }
     if (Record1.BaseFileSpec == null)
     {
         Record1.BaseFileSpec = Record2.BaseFileSpec;
     }
     if ((Record1._action == null) || (Record1._action == FileAction.None))
     {
         Record1._action = Record2.Action;
     }
     if (Record1._action == null)
     {
         Record1._action = FileAction.None;
     }
     if ((Record1._resolveType == null) || (Record1._resolveType == ResolveType.None))
     {
         Record1._resolveType = Record2._resolveType;
     }
     if (Record1._resolveType == null)
     {
         Record1._resolveType = ResolveType.None;
     }
     if ((Record1._resolveSubtype == null) || (Record1._resolveSubtype == ResolveSubtype.None))
     {
         Record1._resolveSubtype = Record2._resolveSubtype;
     }
     if (Record1._resolveSubtype == null)
     {
         Record1._resolveSubtype = ResolveSubtype.None;
     }
     if (Record1.Sumary == null)
     {
         Record1.Sumary = Record2.Sumary;
     }
     if (Record1.Analysis == null)
     {
         Record1.Analysis = Record2.Analysis;
     }
     if (Record1.Result == null)
     {
         Record1.Result = Record2.Result;
     }
 }
Пример #2
0
        public static FileResolveRecord FromResolvedCmdTaggedOutput(TaggedObject obj)
        {
            FileResolveRecord frr = new FileResolveRecord();
            int startRev          = -1;
            int endRev            = -1;

            if (obj.ContainsKey("path"))
            {
                frr.LocalFilePath = new LocalPath(obj["path"]);
            }

            if (obj.ContainsKey("startToRev"))
            {
                int.TryParse(obj["startToRev"].Trim('#'), out startRev);
            }
            if (obj.ContainsKey("endToRev"))
            {
                int.TryParse(obj["endToRev"].Trim('#'), out endRev);
            }
            if (obj.ContainsKey("clientFile"))
            {
                VersionRange versions = null;
                if ((startRev >= 0) && (endRev >= 0))
                {
                    versions = new VersionRange(startRev, endRev);
                }

                frr.BaseFileSpec = new FileSpec(new LocalPath(obj["clientFile"]), versions);
            }
            else if (obj.ContainsKey("toFile"))
            {
                VersionRange versions = null;
                if ((startRev >= 0) && (endRev >= 0))
                {
                    versions = new VersionRange(startRev, endRev);
                }
                frr.BaseFileSpec = new FileSpec(new ClientPath(obj["toFile"]), versions);
            }

            if (obj.ContainsKey("startFromRev"))
            {
                int.TryParse(obj["startFromRev"].Trim('#'), out startRev);
            }
            if (obj.ContainsKey("endFromRev"))
            {
                int.TryParse(obj["endFromRev"].Trim('#'), out endRev);
            }
            if (obj.ContainsKey("fromFile"))
            {
                VersionRange versions = null;
                if ((startRev >= 0) && (endRev >= 0))
                {
                    versions = new VersionRange(startRev, endRev);
                }
                frr.FromFileSpec = new FileSpec(new DepotPath(obj["fromFile"]), versions);
            }
            if (obj.ContainsKey("how"))
            {
                frr._action = obj["how"];
            }
            return(frr);
        }
Пример #3
0
        public static FileResolveRecord FromMergeInfo(string l1, string l2, string l3)
        {
            try
            {
                FileResolveRecord frr = new FileResolveRecord();
                int    idx1           = -1;
                int    idx2           = -1;
                string path;

                if (l1 != null)
                {
                    idx1 = l1.IndexOf(" - merging ");
                    if (idx1 < 0)
                    {
                        idx1 = l1.IndexOf(" - resolving ");
                    }
                    if (idx1 < 0)
                    {
                        idx1 = l1.IndexOf(" - binary/binary merge ");
                    }
                    if (idx1 < 0)
                    {
                        idx1 = l1.IndexOf(" - text/binary merge ");
                    }
                    if (idx1 < 0)
                    {
                        return(null);
                    }
                    path = l1.Substring(0, idx1);

                    frr.LocalFilePath = new LocalPath(path);

                    idx1 = l1.IndexOf("//");

                    idx2 = l1.IndexOf(" using base ");
                    if (idx2 < 0)
                    {
                        path = l1.Substring(idx1);
                    }
                    else
                    {
                        path = l1.Substring(idx1, idx2 - idx1);
                    }
                    string[] parts = path.Split('#');
                    int      rev   = -1;
                    int.TryParse(parts[1], out rev);

                    frr.FromFileSpec = new FileSpec(new DepotPath(parts[0]), new Revision(rev));

                    idx2 = l1.IndexOf(" using base ");
                    if (idx2 > 0)
                    {
                        path = l1.Substring(idx2);

                        parts = path.Split('#');
                        rev   = -1;
                        int.TryParse(parts[1], out rev);

                        frr.BaseFileSpec = new FileSpec(new DepotPath(parts[0]), new Revision(rev));
                    }
                }
                if (l3 != null)
                {
                    idx1 = l3.LastIndexOf(" - ") + 3;

                    idx2 = l3.IndexOf('/', idx1) - 1;
                    if (idx2 < 0)
                    {
                        idx2 = l3.Length - 1;
                    }
                    string actionStr = l3.Substring(idx1, idx2 - idx1);

                    frr._action = actionStr;

                    if (frr._action == null)
                    {
                        frr._action = FileAction.None;
                    }
                }
                frr.Sumary   = l1;
                frr.Analysis = new ResolveAnalysis(l2);
                frr.Result   = l3;

                return(frr);
            }
            catch
            {
                return(null);
            }
        }
Пример #4
0
        public static FileResolveRecord FromResolveCmdTaggedOutput(TaggedObject obj)
        {
            FileResolveRecord frr = new FileResolveRecord();
            int startRev          = -1;
            int endRev            = -1;

            if (obj.ContainsKey("clientFile"))
            {
                frr.LocalFilePath = new LocalPath(obj["clientFile"]);
            }
            if (obj.ContainsKey("baseFile"))
            {
                int         baseRev = -1;
                VersionSpec vs      = null;
                if (obj.ContainsKey("baseRev"))
                {
                    if (int.TryParse(obj["baseRev"], out baseRev))
                    {
                        vs = new Revision(baseRev);
                    }
                }
                frr.BaseFileSpec = new FileSpec(new DepotPath(obj["baseFile"]), vs);
            }

            if (obj.ContainsKey("startFromRev"))
            {
                int.TryParse(obj["startFromRev"], out startRev);
            }
            if (obj.ContainsKey("endFromRev"))
            {
                int.TryParse(obj["endFromRev"], out endRev);
            }
            if (obj.ContainsKey("fromFile"))
            {
                VersionRange versions = null;
                if ((startRev >= 0) && (endRev >= 0))
                {
                    versions = new VersionRange(startRev, endRev);
                }
                frr.FromFileSpec = new FileSpec(new DepotPath(obj["fromFile"]), versions);
            }
            if (obj.ContainsKey("how"))
            {
                frr._action = obj["how"];
            }
            else
            {
                frr.Action = FileAction.None;
            }
            if (obj.ContainsKey("resolveType"))
            {
                frr._resolveType = obj["resolveType"];
            }
            else
            {
                frr.ResolveType = ResolveType.None;
            }
            if (obj.ContainsKey("contentResolveType"))
            {
                switch (obj["contentResolveType"])
                {
                case "3waytext":
                    frr.ResolveSubtype = ResolveSubtype.ThreeWayText;
                    break;

                case "3wayraw":
                    frr.ResolveSubtype = ResolveSubtype.ThreeWayRaw;
                    break;

                case "2wayraw":
                    frr.ResolveSubtype = ResolveSubtype.TwoWayRaw;
                    break;

                default:
                    frr.ResolveSubtype = ResolveSubtype.None;
                    break;
                }
            }
            else
            {
                frr.ResolveSubtype = ResolveSubtype.None;
            }
            return(frr);
        }