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; } }
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); }
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); } }
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); }