Python2转Python3时pygit2推送报错KeyError:ODB类型不匹配求助
问题排查:Python3下pygit2推送报错
KeyError: 'the requested type does not match the type in the ODB' 环境背景
- 正在将Python2代码迁移至Python3以维护单一代码库
- CPython2.7 + pygit2 0.28.2:执行推送逻辑无报错
- CPython3.10 + pygit2 1.9.2:执行推送逻辑出现错误
报错详情
执行代码err = C.git_remote_push(self._remote, refspecs, opts)返回错误码-3,经payload.check_error(err)映射为:KeyError: 'the requested type does not match the type in the ODB'
完整回溯信息:
Traceback (most recent call last): File "/app/shared/common/git/handlers.py", line 488, in Push remote.push(temp3, callbacks=self.callbacks) File "/usr/local/lib/python3.10/site-packages/pygit2/remote.py", line 257, in push payload.check_error(err) File "/usr/local/lib/python3.10/site-packages/pygit2/callbacks.py", line 93, in check_error check_error(error_code) File "/usr/local/lib/python3.10/site-packages/pygit2/errors.py", line 56, in check_error raise KeyError(message)' KeyError: 'the requested type does not match the type in the ODB'
需指引的排查方向
- 报错中“请求的类型与ODB中的类型不匹配”,这里的类型具体指什么?
- 是否存在pygit2版本差异:0.28.2默认启用强制推送,而1.9.2需要显式配置?
- 补充说明:Python3环境已关闭libgit2的
strict mode
内容的提问来源于stack exchange,提问作者dstromberg
相关产品推荐
相关产品推荐

