From f8775f9b8e40b18352399445dba99dd1d805e8c6 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 7 Feb 2016 12:20:04 +0100 Subject: fix(cmd): prevent deadlock on clone/fetch/pull We keep stdout closed, which seems to have the side-effect of stdout being connected to your TTY, in case you run a terminal. However, this shold also prevent deadlocks, as only stderr is used. The alternative would have been to try to fetch lines concurrently, and we have been there. For clone(), `communicate()` is used, and with some luck this will just do the right thing. Even though last time I checked, it didn't ... ? Lets see. Stab at #72 --- git/cmd.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'git/cmd.py') diff --git a/git/cmd.py b/git/cmd.py index 9b2abc71..3fa24fff 100644 --- a/git/cmd.py +++ b/git/cmd.py @@ -279,8 +279,10 @@ class Git(LazyMixin): self.proc = None if proc.stdin: proc.stdin.close() - proc.stdout.close() - proc.stderr.close() + if proc.stdout: + proc.stdout.close() + if proc.stderr: + proc.stderr.close() # did the process finish already so we have a return code ? if proc.poll() is not None: -- cgit v1.2.1