git_command: rework stdin handling

We only provide input to GitCommand in one place, so inline the logic
to be more synchronous and similar to subprocess.run.  This makes the
code simpler and easier to understand.

Change-Id: Ibe498fedf608774bae1f807fc301eb67841c468b
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/297142
Reviewed-by: Michael Mortensen <mmortensen@google.com>
Tested-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
Mike Frysinger 2021-02-16 15:38:53 -05:00
parent c47a235bc5
commit f37b9827a9
2 changed files with 8 additions and 10 deletions

View File

@ -249,7 +249,7 @@ class GitCommand(object):
project,
cmdv,
bare=False,
provide_stdin=False,
input=None,
capture_stdout=False,
capture_stderr=False,
merge_output=False,
@ -298,11 +298,7 @@ class GitCommand(object):
command.append('--progress')
command.extend(cmdv[1:])
if provide_stdin:
stdin = subprocess.PIPE
else:
stdin = None
stdin = subprocess.PIPE if input else None
stdout = subprocess.PIPE
stderr = subprocess.STDOUT if merge_output else subprocess.PIPE
@ -350,7 +346,11 @@ class GitCommand(object):
_add_ssh_client(p)
self.process = p
self.stdin = p.stdin
if input:
if isinstance(input, str):
input = input.encode('utf-8')
p.stdin.write(input)
p.stdin.close()
@staticmethod
def _GetBasicEnv():

View File

@ -72,11 +72,9 @@ change id will be added.
new_msg = self._Reformat(old_msg, sha1)
p = GitCommand(None, ['commit', '--amend', '-F', '-'],
provide_stdin=True,
input=new_msg,
capture_stdout=True,
capture_stderr=True)
p.stdin.write(new_msg)
p.stdin.close()
if p.Wait() != 0:
print("error: Failed to update commit message", file=sys.stderr)
sys.exit(1)