From 71ef59b2f913e1df6ec0217922af7209452f03e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Fri, 9 Aug 2019 13:22:08 +0200 Subject: Fixes VSTS Bug 963968: Avoid deleting user content by accident (svn checkout, maybe others) https://devdiv.visualstudio.com/DevDiv/_workitems/edit/963968 --- .../MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs | 7 ++++--- main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'main') diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs index e636edb686..3d2eb4b297 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs @@ -804,18 +804,19 @@ namespace MonoDevelop.VersionControl.Subversion.Unix nb = new notify_baton (); IntPtr localpool = IntPtr.Zero; + string npath = null; try { localpool = TryStartOperation (monitor); // Using Uri here because the normalization method doesn't remove the redundant port number when using https url = NormalizePath (new Uri(url).ToString(), localpool); - string npath = NormalizePath (path, localpool); + npath = NormalizePath (path, localpool); CheckError (svn.client_checkout (IntPtr.Zero, url, npath, ref rev, recurse, ctx, localpool)); } catch (SubversionException e) { if (e.ErrorCode != 200015) throw; - if (Directory.Exists (path.ParentDirectory)) - FileService.DeleteDirectory (path.ParentDirectory); + if (npath != null && Directory.Exists (npath)) + FileService.DeleteDirectory (npath); } finally { TryEndOperation (localpool); } diff --git a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs index 60b0675b39..57170d6a33 100644 --- a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs +++ b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs @@ -251,8 +251,8 @@ namespace SubversionAddinWindows try { client.CheckOut (new SvnUriTarget (url, GetRevision (rev)), path, args); } catch (SvnOperationCanceledException) { - if (Directory.Exists (path.ParentDirectory)) - FileService.DeleteDirectory (path.ParentDirectory); + if (Directory.Exists (path)) + FileService.DeleteDirectory (path); } } } -- cgit v1.2.3