【问题标题】:Deletion of git repository删除 git 存储库
【发布时间】:2015-03-17 12:21:19
【问题描述】:

考虑以下程序:

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); 

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

【问题讨论】:

    标签: c# git libgit2sharp


    【解决方案1】:

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

    你的处理方式很好。提到的问题有不同的起源。

    documentation 中所述,UnauthorizedAccessException 是在出现权限相关问题时提出的。

    事实上,Libgit2Sharp 在这方面的行为与 git 类似,并将 .git/objects 层次结构下的文件标记为只读,因此在尝试删除它们时会引发异常。

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

    看看source code你是否愿意重复使用它。

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 2012-11-28
      • 2011-09-21
      • 2019-05-27
      • 2011-01-23
      • 1970-01-01
      • 2019-12-09
      • 2013-05-11
      • 2012-03-02
      相关资源
      最近更新 更多