Commit 3eaa42770eb3ac6e4a2180de46f08cbdf1f8cfd2

Use Open3#popen3 on platforms which support it so Subversion's stderr isn't redirected to Ruby's stderr. On other platforms, use the regular Ruby pling method of running processes.

git-svn-id: svn+ssh://rubyforge.org/var/svn/piston/trunk@118 d6c2ea82-c31b-0410-8381-e9c44f9824c5

Commit diff

lib/piston/subversion_client.rb

 
1414 end
1515
1616 def log(&block)
17 @logger.debug &block if logger
17 @logger.debug(&block) if logger
1818 end
1919
2020 private
2424 cmd = %Q|#{executable} #{args.join(' ')}|
2525 log {cmd}
2626 ENV["LANGUAGE"] = "C"
27 value = `#{cmd}`
27 value = run_real(cmd)
2828 log {value}
2929 value
3030 end
31
32 begin
33 raise LoadError, "Not implemented on Win32 machines" if RUBY_PLATFORM =~ /mswin32/
34 require "open3"
35 include Open3
36
37 def run_real(cmd)
38 log {"==> Using popen3()"}
39 popen3(cmd) do |stdin, stdout, stderr|
40 return stdout.read
41 end
42 end
43 rescue LoadError
44 def run_real(cmd)
45 log {"==> Using Kernel::exec()"}
46 `#{cmd}`
47 end
48 end
3149 end
3250end
toggle raw diff