gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:05:22 59 4
gpt4 key购买 nike

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

我发现 Git .idx 和 .pack 文件对编程删除特别有抵抗力:

C:\github\my-org\my-repo\.git\objects\pack\pack-905fbcfd5f24c5711de900f3946b4137d26df6d5.idx

C:\github\my-org\my-repo\.git\objects\pack\pack-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) 代码抛出异常:

Access to the path 'pack-33ea2068b66028f98ac9deb55c3b5d1450d65dea.idx' is denied.

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

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

最佳答案

某个进程正在保留该特定包文件的句柄(process explorer 可以是 check that for you)

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

The message looks like the one you'd get when the reason is that you're trying to remove a read-only file, which Windows does not like, and the objects git's object database (of which that index file is one) are read-only.

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

关于windows - 以编程方式删除 .git .idx .pack 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905529/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com