git » git-arr » commit 66afd72

run_git: add option to return raw output stream

author Eric Sunshine
2015-01-13 09:57:06 UTC
committer Alberto Bertogli
2015-01-13 19:51:44 UTC
parent bb9bad89d17ed584f52015ae6db6398889d23a81

run_git: add option to return raw output stream

Currently, clients which want the raw output from a Git command must
sneakily extract the raw 'fd' from the utf8-encoding wrapper returned
by run_git(). This is ugly and fragile. Instead, provide a formal
mechanism for requesting raw output.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>

git.py +4 -1

diff --git a/git.py b/git.py
index 9a77c7c..10cddcd 100644
--- a/git.py
+++ b/git.py
@@ -41,7 +41,7 @@ class EncodeWrapper:
         return s.decode(self.encoding, errors = self.errors)
 
 
-def run_git(repo_path, params, stdin = None, silent_stderr = False):
+def run_git(repo_path, params, stdin = None, silent_stderr = False, raw = False):
     """Invokes git with the given parameters.
 
     This function invokes git with the given parameters, and returns a
@@ -63,6 +63,9 @@ def run_git(repo_path, params, stdin = None, silent_stderr = False):
         p.stdin.write(stdin)
         p.stdin.close()
 
+    if raw:
+        return p.stdout
+
     # We need to wrap stdout if we want to decode it as utf8, subprocess
     # doesn't support us telling it the encoding.
     if sys.version_info.major == 3: