我们正在使用 Bonobo Git Server 来托管一些内部 git 存储库。尝试检查我们的一个存储库时,我们收到此错误:
RPC 失败;结果 = 22,HTTP 代码 = 500
致命:远端意外挂断
在 Windows 事件查看器中,它会记录以下消息:
Exception information:
Exception type: ArithmeticException
Exception message: Overflow or underflow in the arithmetic operation.
Request information:
Request URL: http://localhost:50287/MyRepo.git/git-upload-pack
Request path: /MyRepo.git/git-upload-pack
如果我在本地调试 Bonobo,在 C# 中不会引发异常;它来自git进程的外部。代码utlizes像这样Process
运行git.exe
:
using (var process = System.Diagnostics.Process.Start(info))
{
inStream.CopyTo(process.StandardInput.BaseStream);
process.StandardInput.Write('\0');
process.StandardOutput.BaseStream.CopyTo(outStream);
process.WaitForExit();
}
传递给 git 的命令参数是:
上传包 --stateless-rpc D:\PathToRepos\MyRepo
如果我在git.exe
命令提示符下使用 clone 命令运行,项目会正确克隆(带有 警告templates not found
)
我认为这是 C# 和 git 流式传输到Response.OutputStream
.