Mercurial > hg
changeset 14506:733af5d9f6b2 stable 1.8.4
subrepo: make stdin for svn a pipe for non-interactive use (issue2759)
This certainly can't hurt, so go ahead and do it, potentially along
with --non-interactive if that flag is safe for the given subcommand.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Tue, 31 May 2011 19:49:17 -0500 |
parents | 90ef40bf97e3 |
children | 521496668568 |
files | mercurial/subrepo.py |
diffstat | 1 files changed, 12 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/subrepo.py Tue May 31 16:22:04 2011 -0500 +++ b/mercurial/subrepo.py Tue May 31 19:49:17 2011 -0500 @@ -524,13 +524,17 @@ def _svncommand(self, commands, filename=''): cmd = ['svn'] - # Starting in svn 1.5 --non-interactive is a global flag - # instead of being per-command, but we need to support 1.4 so - # we have to be intelligent about what commands take - # --non-interactive. - if (not self._ui.interactive() and - commands[0] in ('update', 'checkout', 'commit')): - cmd.append('--non-interactive') + extrakw = {} + if not self._ui.interactive(): + # Making stdin be a pipe should prevent svn from behaving + # interactively even if we can't pass --non-interactive. + extrakw['stdin'] = subprocess.PIPE + # Starting in svn 1.5 --non-interactive is a global flag + # instead of being per-command, but we need to support 1.4 so + # we have to be intelligent about what commands take + # --non-interactive. + if commands[0] in ('update', 'checkout', 'commit'): + cmd.append('--non-interactive') cmd.extend(commands) if filename is not None: path = os.path.join(self._ctx._repo.origroot, self._path, filename) @@ -540,7 +544,7 @@ env['LC_MESSAGES'] = 'C' p = subprocess.Popen(cmd, bufsize=-1, close_fds=util.closefds, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - universal_newlines=True, env=env) + universal_newlines=True, env=env, **extrakw) stdout, stderr = p.communicate() stderr = stderr.strip() if p.returncode: