Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        static string[] GetFileLines(byte[] data)
        {
            Encoding encoding = null;
            string   text     = DXVCSHelpers.ReadTextFromByte(data, out encoding);

            return(StringsDiff.GetTextLines(text));
        }