public IChangeInfo DiffFiles(Item item1, Item item2) { if (item1.ItemType != ItemType.File) return null; DiffItemVersionedFile diffItem1 = new DiffItemVersionedFile(item1, new ChangesetVersionSpec(item1.ChangesetId)); DiffItemVersionedFile diffItem2 = new DiffItemVersionedFile(item2, new ChangesetVersionSpec(item2.ChangesetId)); DiffOptions options = new DiffOptions(); options.UseThirdPartyTool = false; options.Flags = DiffOptionFlags.EnablePreambleHandling | DiffOptionFlags.IgnoreWhiteSpace; options.OutputType = DiffOutputType.Unified; options.TargetEncoding = Console.OutputEncoding; options.SourceEncoding = Console.OutputEncoding; using (var statistics = new DiffStatisticsReader()) { options.StreamWriter = statistics.CreateWriter(); options.StreamWriter.AutoFlush = true; Difference.DiffFiles(item1.VersionControlServer, diffItem1, diffItem2, options, item1.ServerItem, true); return statistics.GetStatistics(null); } }
private void Compare(string serverItem, int fromChangesetId, int toChangesetId) { try { var itemFrom = new DiffItemVersionedFile(versionControlServer, serverItem, new ChangesetVersionSpec(fromChangesetId)); var itemTo = new DiffItemVersionedFile(versionControlServer, serverItem, new ChangesetVersionSpec(toChangesetId)); Difference.VisualDiffItems(versionControlServer, itemFrom, itemTo); } catch (Exception ex) { //HACK } }
public string DiffItemWithPrevVersion(Item item) { string diffStr = ""; // Get previous version item // Item prevItem = Server.GetItem(item.ItemId, item.ChangesetId - 1); if (prevItem != null) { DiffItemVersionedFile curFile = new DiffItemVersionedFile(Server, item.ItemId, item.ChangesetId, null); DiffItemVersionedFile prevFile = new DiffItemVersionedFile(Server, prevItem.ItemId, prevItem.ChangesetId, null); // Create memory stream for buffering diff output in memory // MemoryStream memStream = new MemoryStream(); // Here we set up the options to show the diffs in the console with the unified diff // format. DiffOptions options = new DiffOptions(); options.UseThirdPartyTool = false; // These settings are just for the text diff (not needed for an external tool). options.Flags = DiffOptionFlags.EnablePreambleHandling | DiffOptionFlags.IgnoreWhiteSpace; options.OutputType = DiffOutputType.Unified; options.TargetEncoding = Console.OutputEncoding; options.SourceEncoding = Console.OutputEncoding; options.StreamWriter = new StreamWriter(memStream); options.StreamWriter.AutoFlush = true; Difference.DiffFiles(Server, prevFile, curFile, options, prevItem.ServerItem, true); // Move to the beginning of the stream for reading. memStream.Seek(0, SeekOrigin.Begin); StreamReader sr = new StreamReader(memStream); diffStr = sr.ReadToEnd(); } return diffStr; }