public Stream GetContents() { Stream dataFile = new FileStream(item.DataPath, FileMode.Open, FileAccess.Read, FileShare.Read); var itemFile = item.ItemFile; var lastRev = itemFile.GetLastRevision(); if (lastRev != null) { IEnumerable <DeltaOperation> deltaOps = null; while (lastRev != null && lastRev.Revision > this.Version) { var branchRev = lastRev as BranchRevisionRecord; if (branchRev != null) { var branchRevId = branchRev.Revision; var itemPath = item.Database.GetDataPath(branchRev.BranchFile); itemFile = new ItemFile(itemPath, item.Database.Encoding); lastRev = itemFile.GetLastRevision(); while (lastRev != null && lastRev.Revision >= branchRevId) { lastRev = itemFile.GetPreviousRevision(lastRev); } } else { var editRev = lastRev as EditRevisionRecord; if (editRev != null) { var delta = itemFile.GetPreviousDelta(editRev); if (delta != null) { var curDeltaOps = delta.Operations; deltaOps = (deltaOps == null) ? curDeltaOps : DeltaUtil.Merge(deltaOps, curDeltaOps); } } lastRev = itemFile.GetPreviousRevision(lastRev); } } if (deltaOps != null) { dataFile = new DeltaStream(dataFile, deltaOps); } } return(dataFile); }