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; + } + } + } +}