diff --git a/git_command.py b/git_command.py index 51e856a..6e28522 100644 --- a/git_command.py +++ b/git_command.py @@ -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(): diff --git a/subcmds/cherry_pick.py b/subcmds/cherry_pick.py index c333fcf..4b7f141 100644 --- a/subcmds/cherry_pick.py +++ b/subcmds/cherry_pick.py @@ -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)