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
            }
        }
Example #3
0
		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;
		}