diff options
Diffstat (limited to 'git/repo/base.py')
-rw-r--r-- | git/repo/base.py | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/git/repo/base.py b/git/repo/base.py index 947d77d2..8b68b5ff 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -899,8 +899,12 @@ class Repo(object): try: proc = git.clone(url, path, with_extended_output=True, as_process=True, v=True, **add_progress(kwargs, git, progress)) - progress_handler = progress and progress.new_message_handler() or None - handle_process_output(proc, None, progress_handler, finalize_process) + if progress: + handle_process_output(proc, None, progress.new_message_handler(), finalize_process) + else: + (stdout, stderr) = proc.communicate() # FIXME: Will block of outputs are big! + finalize_process(proc, stderr=stderr) + # end handle progress finally: if prev_cwd is not None: os.chdir(prev_cwd) @@ -920,10 +924,8 @@ class Repo(object): # sure repo = cls(os.path.abspath(path), odbt=odbt) if repo.remotes: - writer = repo.remotes[0].config_writer - writer.set_value('url', repo.remotes[0].url.replace("\\\\", "\\").replace("\\", "/")) - # PY3: be sure cleanup is performed and lock is released - writer.release() + with repo.remotes[0].config_writer as writer: + writer.set_value('url', repo.remotes[0].url.replace("\\\\", "\\").replace("\\", "/")) # END handle remote repo return repo |