以编程方式删除.git .idx .pack文件

时间:2015-06-18 02:28:53

标签: windows git file

在Windows Server 2008上运行的ASP.NET C#app

我发现Git .idx和.pack文件特别耐编程删除:

  

C:\ github上\我-ORG \我回购\ git的\对象\包\包-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx

     

C:\ github上\我-ORG \我回购\ git的\对象\包\包-905fbcfd5f24c5711de900f3946b4137d26df6d5.pack

git clone操作以只读方式创建文件 - 但即使关闭该位,仍然存在删除问题:

var path = @"C:\github\my-org\my-repo\.git\objects\pack\pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx";

File.SetAttributes(path , FileAttributes.Normal);
File.Delete(path);

File.Delete(path)代码抛出异常:

  

访问路径'pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx'   被拒绝。

由于路径不在我的站点目录中,我想知道是否需要为ASP.NET站点AppPool工作进程标识明确分配在其应用程序域之外写入/删除文件夹/文件的权限?

请注意,在我的Windows 7本地工作站上,调用delete dir操作的nUnit测试运行为绿色。在调试器中,我可以证明,一旦从所有文件(如果存在)中删除了只读属性,Directory.Delete(path,true)操作就不会抛出。

1 个答案:

答案 0 :(得分:3)

进程正在处理该特定包文件(process explorer可以check that for you

或者存在权限访问问题,例如libgit2sharp/issues/769

  
    

当您尝试删除Windows不喜欢的只读文件以及对象git的对象数据库时,该消息看起来就像您所获得的消息(该索引文件为1)是只读的。

  
     

删除readonly标志允许我删除整个目录。