diff --git a/src/AddIns/VersionControl/SubversionAddIn/ICSharpCode.Svn.addin b/src/AddIns/VersionControl/SubversionAddIn/ICSharpCode.Svn.addin
index 0f978e37f9..a72bdfee83 100644
--- a/src/AddIns/VersionControl/SubversionAddIn/ICSharpCode.Svn.addin
+++ b/src/AddIns/VersionControl/SubversionAddIn/ICSharpCode.Svn.addin
@@ -23,6 +23,16 @@
class = "ICSharpCode.Svn.Commands.RegisterEventsCommand"/>
+
+
+
+
+
+
+
+
+ /// Description of SvnDiffProvider.
+ ///
+ public class SvnDiffProvider : IDiffProvider
+ {
+ public Stream GetDiff(string fileName, ITextBuffer modifiedBuffer)
+ {
+ SvnFileDiff diff;
+ string tempFile = Path.GetTempFileName();
+ MemoryStream stream = new MemoryStream();
+
+ File.WriteAllText(tempFile, modifiedBuffer.Text);
+ SvnFileDiff.TryCreate(fileName, tempFile, new SvnFileDiffArgs(), out diff);
+ diff.WriteDifferences(stream, new SvnDiffWriteDifferencesArgs());
+ File.Delete(tempFile);
+
+ return stream;
+ }
+ }
+
+ public class SvnBaseVersionProvider : IDocumentBaseVersionProvider
+ {
+ public Stream OpenBaseVersion(string fileName)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj b/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj
index 4ed0346461..d30caa151e 100644
--- a/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj
+++ b/src/AddIns/VersionControl/SubversionAddIn/SubversionAddIn.csproj
@@ -83,6 +83,7 @@
+
InfoPanel.cs
diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 36a63578cd..faac1af39e 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -107,6 +107,7 @@
+
diff --git a/src/Main/Base/Project/Src/Editor/IDocumentBaseVersionProvider.cs b/src/Main/Base/Project/Src/Editor/IDocumentBaseVersionProvider.cs
new file mode 100644
index 0000000000..6f21c908b3
--- /dev/null
+++ b/src/Main/Base/Project/Src/Editor/IDocumentBaseVersionProvider.cs
@@ -0,0 +1,51 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using ICSharpCode.Core;
+
+namespace ICSharpCode.SharpDevelop.Editor
+{
+ public interface IDocumentBaseVersionProvider
+ {
+ ///
+ /// Provides the BASE-Version for a file. This can be either the file saved
+ /// to disk or a base version provided by any VCS.
+ ///
+ Stream OpenBaseVersion(string fileName);
+ }
+
+ public interface IDiffProvider
+ {
+ Stream GetDiff(string fileName, ITextBuffer modifiedBuffer);
+ }
+
+ public class VersioningServices
+ {
+ public static readonly VersioningServices Instance = new VersioningServices();
+
+ List baseVersionProviders;
+
+ public List BaseVersionProviders {
+ get {
+ if (baseVersionProviders == null)
+ baseVersionProviders = AddInTree.BuildItems("/Workspace/BaseVersionProviders", this, false);
+
+ return baseVersionProviders;
+ }
+ }
+
+ List diffProviders;
+
+ public List DiffProviders {
+ get {
+ if (diffProviders == null)
+ diffProviders = AddInTree.BuildItems("/Workspace/DiffProviders", this, false);
+
+ return diffProviders;
+ }
+ }
+ }
+}