-
-
Couldn't load subscription status.
- Fork 960
Description
I'm trying to access the progress of time consuming Git operations using GitPython. I tried the sample solution taken from the official documentation, and also tried passing in a method following the exact signature of the update method below. Everytime I call fetch(), push(), pull() with the parameter progress=<anything>, the programm is stuck and the update method does not get called. If I call those operations without setting the progress parameter, it works flawlessly.
$ git --versionis 2.21.0- Calling
sys.stdout.flush()afterprint()does not help either - I use
assertto assure my repo objects are available and in the expected state ProgressPrinter()yields notNone- I tried calling the functions from the main thread and multithreaded
- I took a look at the implementation (line 350) of
RemoteProgressand also the implementation (line 815) ofpush()and do not see a reason, why it would not continue execution - I found out, that when I assign my
ProgressPrinterinstance and pass the assigned variable, the programm is not stuck anymore. Yet theupdate()method does not get called and no progress is printed:
# Not stuck anymore, yet no progress
pp = ProgressPrinter()
fetch_info = origin.fetch(progress=pp)Core of my implementation:
from git import RemoteProgress
class ProgressPrinter(RemoteProgress):
def update(self,
op_code,
cur_count,
max_count=None,
message=''):
print("Is this even called?")And later on:
origin = repo.remotes.origin
assert origin.exists()
fetch_info = origin.fetch(progress=ProgressPrinter())Any recommendations on how to investigate this problem furthermore? I've been debugging this for several days now and feel like I am missing something.