/// <summary> /// difference a specific set o' stuffs /// </summary> /// <param name="item1"></param> /// <param name="csID1"></param> /// <param name="item2"></param> /// <param name="csID2"></param> public static void VisualDiff(Item item1, int csID1, Item item2, int csID2) { VersionControlServer vcs = item1.VersionControlServer; IDiffItem left; IDiffItem right; left = new DiffItemVersionedFile(item1, new ChangesetVersionSpec(csID1)); right = new DiffItemVersionedFile(item2, new ChangesetVersionSpec(csID2)); Difference.VisualDiffItems(vcs, left, right); }
public void ShowOldFiles(Workspace workspace, string path) { // process command options ItemSpec itemSpec = new ItemSpec(path, RecursionType.Full); List <ItemSpec> itemSpecs = new List <ItemSpec>(); itemSpecs.Add(itemSpec); ExtendedItem[][] items = workspace.GetExtendedItems(itemSpecs.ToArray(), DeletedState.NonDeleted, ItemType.Any); foreach (ExtendedItem[] itemArray in items) { foreach (ExtendedItem item in itemArray) { if (item.IsLatest) { continue; } string p = item.LocalItem.Substring(path.Length); if (OptionBrief) { Driver.WriteLine(p); continue; } IDiffItem a = new DiffItemNull(); IDiffItem b = new DiffItemNull(); if ((item.ChangeType & ChangeType.Add) != ChangeType.Add) { a = new DiffItemLocalFile(item.LocalItem, item.Encoding, DateTime.Now, false); } if ((item.ChangeType & ChangeType.Delete) != ChangeType.Delete) { b = new DiffItemVersionedFile(VersionControlServer, item.ItemId, item.VersionLatest, item.LocalItem); } Difference.DiffFiles(VersionControlServer, a, b, GetDiffOptions(), p, true); } } }
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 } }
/// <summary> /// Generates a report about Edit change /// </summary> private void GenerateEditReport(string diffFileName, Changeset changeset, Change change) { IDiffItem origItem = new DiffItemVersionedFile(_sourceControl, change.Item.ServerItem, new ChangesetVersionSpec(changeset.ChangesetId - 1)); IDiffItem newItem = new DiffItemVersionedFile(_sourceControl, change.Item.ServerItem, new ChangesetVersionSpec(changeset.ChangesetId)); using (var writer = new StreamWriter(diffFileName)) { WriteHeader(writer, changeset); var diffOptions = new DiffOptions { UseThirdPartyTool = false, OutputType = DiffOutputType.Context, ContextLines = 0, StreamWriter = writer }; Difference.DiffFiles(_sourceControl, origItem, newItem, diffOptions, null, true); } }
// Display the differences between the two file versions. static void DiffFiles(Item item1, Item item2) { if (item1.ItemType != ItemType.File) { return; } Console.WriteLine(); DiffItemVersionedFile diffItem1 = new DiffItemVersionedFile(item1, new ChangesetVersionSpec(item1.ChangesetId)); DiffItemVersionedFile diffItem2 = new DiffItemVersionedFile(item2, new ChangesetVersionSpec(item2.ChangesetId)); // Here we set up the options to show the diffs in the console with the unified diff // format. // If you simply want to launch the external diff viewer, rather than get a text diff, // you just need to set UseThirdPartyTool to true. You don't need to set any of the // other properties to use the external tool. 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(Console.OpenStandardOutput(), Console.OutputEncoding); options.StreamWriter.AutoFlush = true; // The last parameter indicates whether the code should block until the external diff // viewer exits. Set it to false if you are calling this from a GUI app. Difference.DiffFiles(item1.VersionControlServer, diffItem1, diffItem2, options, item1.ServerItem, true); }