svn - 无法以编程方式删除 SVN 工作副本

标签 svn sharpsvn

我正在使用SharpSvn应用程序中的库。作为自动化集成测试的一部分,我创建一个测试存储库, checkout 工作副本,执行一些测试,然后删除存储库和工作副本文件夹。

但是,一个简单的 Directory.Delete(workingCopyPath, true); 总是会产生 UnauthorizedAccessException ,并显示消息“访问路径‘entries’被拒绝.”。我可以使用以下代码重现错误:

     using (var svnClient = new SvnClient())
     {
        svnClient.CheckOut(
           new SvnUriTarget(new Uri(repositoryPath)), workingCopyPath);
     }
     Directory.Delete(workingCopyPath, true);

如果我这样做,仍然会出现此错误

  • 尝试删除创建的工作副本 通过之前运行集成 测试
  • Thread.Sleep 几秒前 尝试删除

如果我使用资源管理器手动删除临时工作副本,我不会收到任何错误。

这里出了什么问题?以编程方式删除 Subversion 工作副本的正确方法是什么?

最佳答案

结果Directory.Delete拒绝删除只读文件。

我现在用这个方法来删除目录:

private void DeleteDirectory(string path)
{
   var directory = new DirectoryInfo(path);
   DisableReadOnly(directory);
   directory.Delete(true);
}

private void DisableReadOnly(DirectoryInfo directory)
{
   foreach (var file in directory.GetFiles())
   {
      if (file.IsReadOnly)
         file.IsReadOnly = false;
   }
   foreach (var subdirectory in directory.GetDirectories())
   {
      DisableReadOnly(subdirectory);
   }
}

关于svn - 无法以编程方式删除 SVN 工作副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1982209/

相关文章:

c# - 使用 SharpSvn 获取 "mergable revisions"

c# - 如何使用 SharpSvn 获取存储库的所有分支?

git - Svn 服务器死了……我还能转换成 Git 吗?

visual-studio-2010 - 如何使用 AnkhSVN 在 VS 中添加文件夹并将文件移动到其中?

svn - 需要关于使用分支和合并回主干的帮助/建议

svn - 添加svn :executable的正确方法

svn - 递归解决SVN合并推迟冲突

c# - sharpsvn 日志消息编辑 sharpsvn?

SharpSVN 工作副本已锁定(清理无法清理)

c# - 如何检查文件是否在 SharpSvn 中的源代码管理下?