| Index: git_common.py
|
| diff --git a/git_common.py b/git_common.py
|
| index 6b21050b22b87575ca192d55ddb117fcdb3710c6..1aa1227547fd314623bd5985cbabbaaeca78f5b1 100644
|
| --- a/git_common.py
|
| +++ b/git_common.py
|
| @@ -565,6 +565,28 @@ def run_stream(*cmd, **kwargs):
|
| return proc.stdout
|
|
|
|
|
| +@contextlib.contextmanager
|
| +def run_stream_with_retcode(*cmd, **kwargs):
|
| + """Runs a git command as context manager yielding stdout as a PIPE.
|
| +
|
| + stderr is dropped to avoid races if the process outputs to both stdout and
|
| + stderr.
|
| +
|
| + Raises subprocess2.CalledProcessError on nonzero return code.
|
| + """
|
| + kwargs.setdefault('stderr', subprocess2.VOID)
|
| + kwargs.setdefault('stdout', subprocess2.PIPE)
|
| + cmd = (GIT_EXE, '-c', 'color.ui=never') + cmd
|
| + try:
|
| + proc = subprocess2.Popen(cmd, **kwargs)
|
| + yield proc.stdout
|
| + finally:
|
| + retcode = proc.wait()
|
| + if retcode != 0:
|
| + raise subprocess2.CalledProcessError(retcode, cmd, os.getcwd(),
|
| + None, None)
|
| +
|
| +
|
| def run_with_stderr(*cmd, **kwargs):
|
| """Runs a git command.
|
|
|
|
|