diff options
author | Mike Krüger <mikkrg@microsoft.com> | 2019-08-09 14:22:08 +0300 |
---|---|---|
committer | Mike Krüger <mikkrg@microsoft.com> | 2019-08-15 10:04:55 +0300 |
commit | 71ef59b2f913e1df6ec0217922af7209452f03e2 (patch) | |
tree | 611663cc3b474cf42d0804dc6c695454625b2677 /main | |
parent | be455e0970743c4c7085fcdd7ef83412cfdb0165 (diff) |
Fixes VSTS Bug 963968: Avoid deleting user content by accident (svn
checkout, maybe others)
https://devdiv.visualstudio.com/DevDiv/_workitems/edit/963968
Diffstat (limited to 'main')
2 files changed, 6 insertions, 5 deletions
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);
}
}
}
|