Я пытаюсь получить доступ к прогрессу трудоемких операций Git с помощью GitPython. Я попробовал пример решения, взятый из официальной документации, а также попытался передать метод, следуя точной подписи метода обновления ниже. Каждый раз, когда я вызываю fetch()
, push()
, pull()
с параметром progress=<anything>
, программа застревает, а метод update
не вызывается. Если я вызываю эти операции без установки параметра progress
, он работает безупречно.
- Я использую
asserts
, чтобы убедиться, что мои объекты репо доступны и находятся в ожидаемом состоянии
ProgressPrinter()
не дает None
- Я пытался вызывать функции из основного потока и многопоточных
Я посмотрел на реализацию (строка 350) из RemoteProgress
, а также реализацию (строка 815) из push()
и не вижу причина, по которой не будет продолжено исполнение
Я обнаружил, что когда я присваиваю свой экземпляр ProgressPrinter
и передаю назначенную переменную, программа больше не застревает. Тем не менее, метод update()
не вызывается, и никакого прогресса не печатается
# Not stuck anymore, yet no progress
pp = ProgressPrinter()
fetch_info = origin.fetch(progress=pp)
Ядро моей реализации:
from git import RemoteProgress
class ProgressPrinter(RemoteProgress):
def update(self,
op_code,
cur_count,
max_count=None,
message=''):
print("Is this even called?")
И позже:
origin = repo.remotes.origin
assert origin.exists()
fetch_info = origin.fetch(progress=ProgressPrinter())
Есть какие-нибудь рекомендации по дальнейшему расследованию этой проблемы? Я отлаживал это уже один день и чувствую, что что-то упустил.