Re: [PATCH] Replace git-cvsimport with a rewrite that fixes major bugs.
From: Michael Haggerty <hidden>
Date: 2016-06-15 22:55:38
On 01/03/2013 04:22 PM, Junio C Hamano wrote:
Antoine Pelisse [off-list ref] writes:quoted
quoted
Doesn't Python come with a standard subprocess module that lets you spawn external programs safely, similar to the way Perl's list form open(), e.g. "open($fh, "-|", 'git', @args)", works?... and of course a more boring "system('git', $subcmd, @args)", as well.
Python's os.system() takes exactly one argument, which must be a string, and executes it in a subshell. subprocess is indeed the way to go.
quoted
You mean something like this: p1 = subprocess.Popen([backend.command()], stdout=subprocess.PIPE) subprocess.Popen(["git", "fast-import", "--quiet"] + gitopts, cwd=outdir, stdin=p1.stdout) Assuming gitopts is a list rather than a string. (care must be taken with backend.command() also)Yes. I vaguely recall that the subprocess module once used to be one portability issue but that was between Python 2.3 and 2.4 or some ancient history, and it should no longer be relevant.
subprocess was added in Python 2.4, and the above example should work fine in any version >= 2.4. But please note that other functions have been added to the module since then, like check_call() (v2.5), check_output (v2.7), and some methods were added to the Popen object in v2.6. Such things are documented pretty reliably in the Python library documentation [1]; when in doubt, one can view older versions of the library documentation, which are all available online [2]. Michael [1] http://docs.python.org/2/library/ [2] http://www.python.org/doc/versions/ -- Michael Haggerty mhagger@alum.mit.edu http://softwareswirl.blogspot.com/