Windows Server 2008
McAfee Agent v4.8.0.1938
no indexing service
ASP.NET C# app
libgit2sharp v0.21.0.176 NuGet package
我的ASP.NET应用程序使用libgit2sharp Repository.Clone()
方法将GitHub存储库克隆到本地存储库
在我的本地工作站上运行我的应用程序测试,我对此repo执行各种操作,没有任何问题。
但是,一旦我的应用程序部署到远程服务器并托管在IIS中,我遇到的似乎是权限或锁定问题。
Repository.RemoveUntrackedFiles()
抛出异常:
无法将lockfile重命名为'c:/github/my-org/my-repo/.git/index': 访问被拒绝。
如果我重新尝试操作,它会再次失败,但这次有一个不同的例外:
索引已锁定。这可能是由于并发或崩溃造成的 过程
后续尝试(无论多少次)都会因同样的异常而失败。
问题未通过iisreset或重新启动解决。
如果我通过转到cli并删除本地repo文件夹然后运行git clone来重新创建本地存储库,我现在能够成功执行各种git操作,直到我再次尝试Repository.RemoveUntrackedFiles()
此时以上错误序列重新出现。
编辑:我也遇到了与
类似的问题Repository.Checkout()
抛出异常:
无法将lockfile重命名为'c:/github/my-org/my-repo/.git/index': 访问被拒绝。
然后我转到服务器并从命令行尝试git checkout master:
c:\github\opentable\service-ot-frontdoor-config>git checkout master
fatal: Unable to create 'c:/github/opentable/service-ot-frontdoor-config/.git/index.lock': File exists.
如果当前没有其他git进程正在运行,这可能意味着a git进程先前在此存储库中崩溃了。确保没有其他的git 进程正在运行并手动删除文件以继续。