Example #1
0
        /// <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);
        }
Example #2
0
    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
            }
        }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        // 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);
        }