LibGit2Sharp克隆因LibGit2SharpException而失败:mmap失败

时间:2014-08-19 07:39:58

标签: libgit2sharp

尝试使用LibGit2Sharp v.0.18.1.0克隆远程存储库会抛出此异常:

  

LibGit2Sharp.LibGit2SharpException:mmap失败。句柄值无效:文件的卷已外部更改,因此打开的文件不再有效。

     

at LibGit2Sharp.Core.Ensure.HandleError(Int32 results)      在LibGit2Sharp.Core.Ensure.ZeroResult(Int32结果)      at LibGit2Sharp.Core.Proxy.git_clone(String url,String workdir,GitCloneOptions& opts)      at LibGit2Sharp.Repository.Clone(String sourceUrl,String workdirPath,CloneOptions options)

使用相同的url和workdir,我已经使用Git Bash和SourceTree成功克隆了存储库。但是对于我的任务,我需要以编程方式进行,而LibGit2Sharp似乎是一个不错的选择。

更新:错误发生了变化,现在我得到了大约20KB的远程存储库,然后出现了这个错误:

  

类型' System.AccessViolationException'的第一次机会异常。发生在LibGit2Sharp.dll

     

附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

更新2:AccessViolationException是由不同原因引起的(尝试使用emtpy字符串克隆为远程URL!)

1 个答案:

答案 0 :(得分:0)

<强> TL; DR

这是LibGit2Sharp v0.18.1的问题。这将在即将发布的v0.19中修复(请参阅PR #798 )。

更详细的信息

看起来Stash发送空数据包以在获取存储库时保持连接活动。因此,LibGit2Sharp v0.18.1中嵌入的libgit2版本试图映射零长度文件,从而导致错误。

它已在libgit2中同时修复,提交 libgit2/libgit2@bc8a08868

更新

Pull Request已合并,问题已在现已发布的LibGit2Sharp v0.19中修复。这个问题不应再发生了。