diff --git a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewDisplayBinding.cs b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewDisplayBinding.cs index 4e61723af3..2b341c8996 100644 --- a/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewDisplayBinding.cs +++ b/src/AddIns/VersionControl/SubversionAddIn/Src/Gui/HistoryViewDisplayBinding/HistoryViewDisplayBinding.cs @@ -34,12 +34,8 @@ namespace ICSharpCode.Svn if (file == null || file.IsUntitled || !File.Exists(file.FileName)) { return false; } - if (Commands.RegisterEventsCommand.CanBeVersionControlledFile(file.FileName)) { - StatusKind status = OverlayIconManager.GetStatus(file.FileName); - return status != StatusKind.None && status != StatusKind.Unversioned && status != StatusKind.Ignored; - } else { - return false; - } + + return SvnClientWrapper.IsInSourceControl(file.FileName); } } } diff --git a/src/AddIns/VersionControl/SubversionAddIn/Src/SvnClientWrapper.cs b/src/AddIns/VersionControl/SubversionAddIn/Src/SvnClientWrapper.cs index f0aaeceb59..94d2ad54a8 100644 --- a/src/AddIns/VersionControl/SubversionAddIn/Src/SvnClientWrapper.cs +++ b/src/AddIns/VersionControl/SubversionAddIn/Src/SvnClientWrapper.cs @@ -443,6 +443,23 @@ namespace ICSharpCode.Svn } } + public Stream OpenBaseVersion(string fileName) + { + MemoryStream stream = new MemoryStream(); + this.client.Write(fileName, stream, new SvnWriteArgs() { Revision = SvnRevision.Base }); + return stream; + } + + public static bool IsInSourceControl(string fileName) + { + if (Commands.RegisterEventsCommand.CanBeVersionControlledFile(fileName)) { + StatusKind status = OverlayIconManager.GetStatus(fileName); + return status != StatusKind.None && status != StatusKind.Unversioned && status != StatusKind.Ignored; + } else { + return false; + } + } + static StatusKind ToStatusKind(SvnStatus kind) { switch (kind) { diff --git a/src/AddIns/VersionControl/SubversionAddIn/Src/SvnDiffProvider.cs b/src/AddIns/VersionControl/SubversionAddIn/Src/SvnDiffProvider.cs index 5c9d80f6b4..5f6776c8af 100644 --- a/src/AddIns/VersionControl/SubversionAddIn/Src/SvnDiffProvider.cs +++ b/src/AddIns/VersionControl/SubversionAddIn/Src/SvnDiffProvider.cs @@ -3,44 +3,22 @@ using System; using System.IO; -using System.Threading; -using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.Svn.Commands; -using SharpSvn.Diff; +using SharpSvn; namespace ICSharpCode.Svn { - /// - /// Description of SvnDiffProvider. - /// - public class SvnDiffProvider : IDiffProvider - { - public Stream GetDiff(string fileName, ITextBuffer modifiedBuffer) - { - if (!RegisterEventsCommand.CanBeVersionControlledFile(fileName)) - return null; - - 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(); + if (!SvnClientWrapper.IsInSourceControl(fileName)) + return null; + + using (SvnClientWrapper client = new SvnClientWrapper()) { + return client.OpenBaseVersion(fileName); + } } } }