删除git存储库

Raf*_*fal 4 c# git libgit2sharp

考虑以下计划:

var path = Path.Combine(
    Path.GetTempPath(),
    Path.GetFileNameWithoutExtension(Path.GetRandomFileName()));
Directory.CreateDirectory(path);

var testFile = Path.Combine(path, "test.txt");
File.WriteAllText(testFile, "Test file");

var source = Repository.Init(path);

using (var repository = new Repository(source))
{
    repository.Index.Add("test.txt");
}

Directory.Delete(path, true); 
Run Code Online (Sandbox Code Playgroud)

在删除存储库文件夹时,我得到了UnauthorizedAccessException- 拒绝访问其中一个内部git文件.为了删除文件夹,还有什么我应该处理的吗?

nul*_*ken 8

为了删除文件夹,还有什么我应该处理的吗?

你的处理模式很好.上述问题的起源不同.

文档中所述,UnauthorizedAccessException在存在与权限相关的问题时引发.

实际上,Libgit2Sharp的行为类似于git,并将.git/objects层次结构下的文件标记为只读,因此在尝试删除它们时抛出异常.

为了解决这个问题,并在运行测试时简化清理阶段,我们开发了一个辅助方法(即.DirectoryHelper.DeleteDirectory()),它以递归方式取消设置这些只读属性并删除文件和目录.

请参阅源代码,您是否愿意重复使用它.