/// <summary> /// Calls perforce server to recieve destination data. /// </summary> /// <param name="p2"></param> /// <returns></returns> public string CreateDestinationData(P4Path p2) { P4Execute executer = new P4Execute(); P4ExecutingParameters exePar; //Use below code if source and destination are not of depot but are local workspace locations. exePar = new P4ExecutingParameters("CMD.exe", "where", "\"" + p2.FilePath + "\"", new List <string> { "\"" + @p2.FilePath.ToString() + "\"" }); //Parse output from where and then do p4 files. string data = executer.ExecuteCommand(exePar); string location = ""; if (ValidateReceivedData(data, new[] { "..." })) { location = GetDepotLocation(data, p2.FilePath); } else { return(null); } location = ParseLocation(p2); exePar = new P4ExecutingParameters("CMD.exe", "files", "\"" + p2.FilePath + "\"", new List <string> { "\"" + location + "\"" }); data = executer.ExecuteCommand(exePar); if (ValidateReceivedData(data, new[] { "change" })) { return(data); } return(null); }
/// <summary> /// Parses path values. /// </summary> /// <param name="p2"></param> /// <returns></returns> private string ParseLocation(P4Path p2) { if (p2.FilePath.EndsWith("/")) { return(string.Concat(p2.FilePath, "...")); } return(p2.FilePath); }
/// <summary> /// Stores metadata in meta data object related to a p4File. /// </summary> /// <param name="revs"></param> /// <param name="data"></param> /// <returns></returns> private P4FileTrunkRevisions UpdateFileData(P4FileTrunkRevisions revs, string data) { P4File oldFile = new P4File(); P4Path path = new P4Path(); P4FileMetaData metaData = new P4FileMetaData(); string[] dataArray = data.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < dataArray.Length; i++) { if (dataArray[i].Contains("depotFile")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("/")); metaData.DepotFile = p.Trim(); path.FilePath = Path.GetDirectoryName(p); oldFile.CurrentPath = path; oldFile.FileName = Path.GetFileName(p); continue; } if (dataArray[i].Contains("headAction")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headAction") + 10); metaData.HeadAction = p.Trim(); } if (dataArray[i].Contains("headType")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headType") + 8); metaData.HeadType = p.Trim(); continue; } if (dataArray[i].Contains("headTime")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headTime") + 8); metaData.HeadTime = p.Trim(); continue; } if (dataArray[i].Contains("headRev")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headRev") + 7); metaData.HeadRevision = p.Trim(); continue; } if (dataArray[i].Contains("headChange")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headChange") + 10); metaData.HeadChange = p.Trim(); continue; } if (dataArray[i].Contains("headModTime")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headModTime") + 11); metaData.HeadModTime = p.Trim(); continue; } if (dataArray[i].Contains("haveRev")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("haveRev") + 7); metaData.HaveRevision = p.Trim(); continue; } if (dataArray[i].Contains("fileSize")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("fileSize") + 8); metaData.Filesize = p.Trim(); continue; } if (dataArray[i].Contains("digest")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("digest") + 6); metaData.Digest = p.Trim(); continue; } if (dataArray[i].Contains("isMapped")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("isMapped") + 8); metaData.IsMapped = p.Trim(); continue; } metaData.ExtraHeadProperties = dataArray[i]; } if (string.IsNullOrEmpty(metaData.Digest)) { P4Execute executer = new P4Execute(); P4ExecutingParameters exePar = new P4ExecutingParameters("CMD.EXE", "fstat", null, new List <string> { "-T digest -Ol ", "\"" + metaData.DepotFile + "#" + metaData.HeadRevision + "\"" }); string digest = executer.ExecuteCommand(exePar); if (digest.Contains("digest")) { string p = digest.Substring(digest.IndexOf("digest") + 6); metaData.Digest = p.Trim(); } } oldFile.CurrentPath = path; oldFile.FileMetaData = metaData; revs.OlderRevisions.Add(oldFile); return(revs); }