public IEnumerator <FileVersionInfo> GetEnumerator() { int i = 0; bool previousIsBranch = false; foreach (FileHistoryInfo historyInfo in History) { if (historyInfo.Type != HistoryInfoType.File) { continue; } if (!previousIsBranch) { byte[] revisionData = DXVCSHelpers.TryToDecompressData(data[i]); int version; if (Diff.IsDiffs(revisionData, out version)) { Encoding encoding; string fileText = DXVCSHelpers.ReadTextFromByte(revisionData, out encoding); var splitterStr = DXVCSHelpers.DetectTextSplitter(fileText); byte[] curSplitter = encoding.GetBytes(splitterStr); DiffByteItem[] diffs = Diff.BytesToDiffs(revisionData); revisionData = Diff.GetDataFromDiff(previousData, diffs, curSplitter); } previousData = revisionData; } previousIsBranch = historyInfo.Message == "Branch"; i++; yield return(new FileVersionInfo(historyInfo.Version, historyInfo.ActionDate, historyInfo.User, historyInfo.Comment, previousData)); } }
static string[] GetFileLines(byte[] data) { Encoding encoding = null; string text = DXVCSHelpers.ReadTextFromByte(data, out encoding); return(StringsDiff.GetTextLines(text)); }