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)); } }
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; bool binDiff; if (Diff.IsDiffs(revisionData, out version, out binDiff)) { byte[] curSplitter; DiffByteItem[] diffs = Diff.BytesToDiffs(revisionData, binDiff, out curSplitter); 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)); } }