我试图使用GitPython访问耗时的Git操作的进度。我尝试了从官方文档中获取的示例解决方案,还尝试在下面的update方法的确切签名之后传入一个方法。每次我用参数progress=<anything>
调用fetch()
,push()
,pull()
时,程序就被卡住了,update
方法不会被调用。{cd6>如果没有设置的话,{cd6>可以正常工作。在
asserts
来确保我的repo对象是可用的并且处于预期状态ProgressPrinter()
不产生None
我查看了RemoteProgress
的implementation (line 350),以及{
我发现,当我分配我的ProgressPrinter
实例并传递分配的变量时,程序不再卡住。但是update()
方法不会被调用,也不会打印任何进度
# Not stuck anymore, yet no progress
pp = ProgressPrinter()
fetch_info = origin.fetch(progress=pp)
我的实施核心:
^{pr2}$后来:
^{3}$关于如何进一步调查这个问题有什么建议吗?我已经调试了一天了,感觉好像我遗漏了什么。在
1。GitPython在处理进度信息时卡住了
在过去的几个月里,Git的本地化发生了变化。将Git从
2.21.0
降级到2.20.4
暂时解决了这个问题。这不是一个优雅的解决方案,但是GitPython的开发人员知道这些变化。在看看这个问题,看看它是否解决了:(Github Issue #871)
2。
RemoteProgress
的update()
方法未被调用如果Git进程很快结束,则根本不会调用此方法。为了模拟较长的过程,我建议您从Github/Gitlab克隆一个大型存储库,并按以下方式准备:
我建议在某种程度上改变
update()
方法,当操作以= [up to date]
:PullRequest终止时,它也被称为一次相关问题 更多 >
编程相关推荐