<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -33,7 +33,7 @@ module DeepTest
       def deploy_agents
         @agents_deployed = true
         super
-        @warlock.exit_when_none_running
+        warlock.exit_when_none_running
       end
 
       def agents_deployed?
@@ -43,18 +43,16 @@ module DeepTest
       def daemonize(address, grace_period = MERCY_KILLING_GRACE_PERIOD)
         innie, outie = IO.pipe
 
-        self.class.warlock.start(&quot;Beachhead&quot;) do
+        warlock.start(&quot;Beachhead&quot;, :detach_io =&gt; true) do
           innie.close
 
-          DRb.start_service(&quot;drubyall://#{address}:0&quot;, self)
+          DRb.start_service &quot;drubyall://#{address}:0&quot;, self
           DeepTest.logger.info { &quot;Beachhead started at #{DRb.uri}&quot; }
 
           outie.write DRb.uri
           outie.close
 
-          launch_mercy_killer(grace_period)
-
-          yield if block_given?
+          launch_mercy_killer grace_period
 
           DRb.thread.join
         end
@@ -62,11 +60,7 @@ module DeepTest
         outie.close
         uri = innie.gets
         innie.close
-        DRbObject.new_with_uri(uri)
-      end
-
-      def self.warlock
-        @warlock ||= DeepTest::Warlock.new
+        DRbObject.new_with_uri uri
       end
     end
   end</diff>
      <filename>lib/deep_test/distributed/beachhead.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,12 +13,13 @@ module DeepTest
       end
 
       def establish_beachhead(options)
-        output  = `#{ssh_command(options)} '#{spawn_command(options)}'`
+        output  = `#{ssh_command(options)} '#{spawn_command(options)}' 2&gt;&amp;1`
         output.each do |line|
           if line =~ /Beachhead url: (.*)/
             return DRb::DRbObject.new_with_uri($1)
           end
         end
+        raise &quot;LandingShip unable to establish Beachhead.  Output from #{@config[:address]} was:\n#{output}&quot;
       end
 
       def ssh_command(options)</diff>
      <filename>lib/deep_test/distributed/landing_ship.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,16 @@
 module DeepTest
   class LocalDeployment
+    attr_reader :warlock
+
     def initialize(options, agent_class = DeepTest::Agent)
       @options = options
-      @warlock = Warlock.new
       @agent_class = agent_class
     end
 
+    def warlock
+      @warlock ||= Warlock.new central_command
+    end
+
     def load_files(files)
       files.each {|f| load f}
     end
@@ -17,22 +22,16 @@ module DeepTest
     def deploy_agents
       each_agent do |agent_num|
         start_agent(agent_num) do
-          ProxyIO.replace_stdout_stderr!(central_command.stdout, central_command.stderr) do
-            reseed_random_numbers
-            reconnect_to_database
-            agent = @agent_class.new(agent_num, central_command, @options.new_listener_list)
-            agent.run
-          end
+          reseed_random_numbers
+          reconnect_to_database
+          agent = @agent_class.new(agent_num, central_command, @options.new_listener_list)
+          agent.run
         end
       end        
     end
 
     def terminate_agents
-      @warlock.stop_demons
-    end
-
-    def wait_for_completion
-      @warlock.wait_for_all_to_finish
+      warlock.stop_demons
     end
 
     def number_of_agents
@@ -46,7 +45,7 @@ module DeepTest
     end
 
     def start_agent(agent_num, &amp;blk)
-      @warlock.start(&quot;agent #{agent_num}&quot;, &amp;blk)
+      warlock.start(&quot;agent #{agent_num}&quot;, &amp;blk)
     end
 
     def reseed_random_numbers</diff>
      <filename>lib/deep_test/local_deployment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,10 @@ module DeepTest
       self.level = configured_log_level
     end
 
+    def io_stream
+      @logdev.dev
+    end
+
     def configured_log_level
       if ENV['DEEP_TEST_LOG_LEVEL']
         Logger.const_get(ENV['DEEP_TEST_LOG_LEVEL'])</diff>
      <filename>lib/deep_test/logger.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1,27 @@
 module DeepTest
   class Main
-    def self.run(options, deployment, runner)
-      new(options, deployment, runner).run
-    end
-    
-    def initialize(options, deployment, runner)
+    def initialize(options, deployment, runner, central_command = nil)
       @options = options
-      @runner = runner
       @deployment = deployment
+      @runner = runner
+      @central_command = central_command || CentralCommand.start(options)
+    end
+
+    def load_files(files)
+      @deployment.load_files files
     end
     
     def run(exit_when_done = true)
       passed = false
 
       begin
-        central_command = CentralCommand.start(@options)
         @options.new_listener_list.before_starting_agents
         @deployment.deploy_agents
         begin
           DeepTest.logger.debug { &quot;Loader Starting (#{$$})&quot; }
           passed = @runner.process_work_units
         ensure
-          shutdown(central_command)
+          shutdown
         end
       ensure
         DeepTest.logger.debug { &quot;Main: Stopping CentralCommand&quot; }
@@ -31,9 +31,9 @@ module DeepTest
       Kernel.exit(passed ? 0 : 1) if exit_when_done
     end
 
-    def shutdown(central_command)
+    def shutdown
       DeepTest.logger.debug { &quot;Main: Shutting Down&quot; }
-      central_command.done_with_work
+      @central_command.done_with_work
 
       first_exception = $!
       begin</diff>
      <filename>lib/deep_test/main.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,6 +15,10 @@ module DeepTest
       @target.flush
     end
 
+    def reopen(*args)
+      @target.reopen *args
+    end
+
     def self.replace_stdout_stderr!(new_stdout, new_stderr)
       old_stdout_const, old_stdout_global = STDOUT, $stdout
       old_stderr_const, old_stderr_global = STDERR, $stderr</diff>
      <filename>lib/deep_test/proxy_io.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,14 +20,10 @@ task :'deep_test:establish_beachhead' do
 
   beachhead = DeepTest::Distributed::Beachhead.new(
     options.mirror_path('/tmp'), options, DeepTest::Distributed::SshClientConnectionInfo.new
-  ).daemonize(ENV['HOST']) do
-    STDOUT.reopen(&quot;/tmp/deep_test_server.log&quot;, &quot;a&quot;)
-    STDERR.reopen(STDOUT)
-  end
+  ).daemonize(ENV['HOST'])
 
   puts &quot;Beachhead url: #{beachhead.__drburi}&quot;
+  $stdout.flush
 
-  STDOUT.close
-  STDERR.close
   exit!(0)
 end</diff>
      <filename>lib/deep_test/rake_tasks.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,9 +9,9 @@ module DeepTest
           @runner_options = options # added to make work with 1.1.12
         end
         @deep_test_options = DeepTest::Options.from_command_line(deep_test_options)
-        DeepTest.init(@deep_test_options)
+        DeepTest.init @deep_test_options
+        @main = Main.new @deep_test_options, @deep_test_options.new_deployment, self, central_command
         @central_command = central_command
-        @deployment = @deep_test_options.new_deployment
       end
 
       def central_command
@@ -22,11 +22,11 @@ module DeepTest
       end
 
       def load_files(files)
-        @deployment.load_files files
+        @main.load_files files
       end
 
       def run
-        Main.run(@deep_test_options, @deployment, self)
+        @main.run
       end
 
       def process_work_units</diff>
      <filename>lib/deep_test/spec/runner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,13 @@
 module DeepTest
   class Warlock
-    def initialize
+    def initialize(central_command)
+      @central_command = central_command
       @demons_semaphore = Mutex.new
       @demons = []
       @reapers = []
     end
 
-    def start(name, &amp;block)
+    def start(name, options = {}, &amp;block)
       # Not synchronizing for the fork seems to cause
       # random errors (Bus Error, Segfault, and GC non-object)
       # in Beachhead processes.
@@ -15,23 +16,30 @@ module DeepTest
         pid = nil
         @demons_semaphore.synchronize do 
           pid = DeepTest.drb_safe_fork do
-            catch(:exit_demon) do
-              Signal.trap(&quot;TERM&quot;) { throw :exit_demon }
-
-              # Fork leaves the semaphore locked and we'll never make it
-              # to end of synchronize block.
-              #
-              # The Ruby 1.8.6 C mutex implementation automatically treats
-              # a mutex locked by a dead thread as unlocked and will raise
-              # an error if we try to unlock it from this thread.
-              #
-              @demons_semaphore.unlock if @demons_semaphore.locked?
-
-              begin
-                yield
-              rescue Exception =&gt; e
-                DeepTest.logger.debug { &quot;Exception in #{name} (#{Process.pid}): #{e.message}&quot; }
-                raise
+            if options[:detach_io]
+              $stdout.reopen(&quot;/dev/null&quot;)
+              $stderr.reopen(&quot;/dev/null&quot;)
+            end
+
+            ProxyIO.replace_stdout_stderr!(@central_command.stdout, @central_command.stderr) do
+              catch(:exit_demon) do
+                Signal.trap(&quot;TERM&quot;) { throw :exit_demon }
+
+                # Fork leaves the semaphore locked and we'll never make it
+                # to end of synchronize block.
+                #
+                # The Ruby 1.8.6 C mutex implementation automatically treats
+                # a mutex locked by a dead thread as unlocked and will raise
+                # an error if we try to unlock it from this thread.
+                #
+                @demons_semaphore.unlock if @demons_semaphore.locked?
+
+                begin
+                  yield
+                rescue Exception =&gt; e
+                  DeepTest.logger.debug { &quot;Exception in #{name} (#{Process.pid}): #{e.message}&quot; }
+                  raise
+                end
               end
             end
 
@@ -80,6 +88,7 @@ module DeepTest
     def exit_when_none_running
       Thread.new do
         wait_for_all_to_finish
+        DeepTest.logger.debug { &quot;exiting #{Process.pid} with all demons finished&quot; }
         exit(0)
       end
     end</diff>
      <filename>lib/deep_test/warlock.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,6 @@
 require File.dirname(__FILE__) + &quot;/../../lib/deep_test&quot;
 options = DeepTest::Options.from_command_line(ARGV[0])
 DeepTest.init(options)
-runner = DeepTest::Test::Runner.new(options)
-deployment = options.new_deployment
-deployment.load_files Dir.glob(options.pattern)
-DeepTest::Main.run(options, deployment, runner)
+main = DeepTest::Main.new options, options.new_deployment, DeepTest::Test::Runner.new(options) 
+main.load_files Dir.glob(options.pattern)
+main.run</diff>
      <filename>script/internal/run_test_suite.rb</filename>
    </modified>
    <modified>
      <diff>@@ -25,41 +25,47 @@ module DeepTest
 
       test &quot;service is removed after grace period if agents haven't been started&quot; do
         log_level = DeepTest.logger.level
-        begin
-          DeepTest.logger.level = Logger::ERROR
-          beachhead = Beachhead.new(&quot;&quot;, Options.new({}), stub_everything)
-          beachhead.stubs(:start_agent)
-          beachhead.daemonize(&quot;localhost&quot;, 0.25)
-          # Have to sleep long enough to warlock to reap dead process
-          sleep 1.0
-          assert_equal 0, Beachhead.warlock.demon_count
-        ensure
+        SimpleTestCentralCommand.new.with_drb_server do |central_command|
           begin
-            Beachhead.warlock.stop_demons
+            DeepTest.logger.level = Logger::ERROR
+            beachhead = Beachhead.new(&quot;&quot;, Options.new({}), stub_everything)
+            beachhead.stubs(:central_command).returns central_command
+            beachhead.stubs(:start_agent)
+            beachhead.daemonize(&quot;localhost&quot;, 0.25)
+            # Have to sleep long enough to warlock to reap dead process
+            sleep 1.0
+            assert_equal 0, beachhead.warlock.demon_count
           ensure
-            DeepTest.logger.level = log_level
+            begin
+              beachhead.warlock.stop_demons
+            ensure
+              DeepTest.logger.level = log_level
+            end
           end
         end
       end
 
       test &quot;service is not removed after grace period if agents have been started&quot; do
         log_level = DeepTest.logger.level
-        begin
-          DeepTest.logger.level = Logger::ERROR
-          beachhead = Beachhead.new(&quot;&quot;, Options.new({}), stub_everything)
-          beachhead.stubs(:start_agent)
-          # Since we're not actually starting agents, we don't want to exit when none are running for this test
-          beachhead.instance_variable_get(:@warlock).stubs(:exit_when_none_running)
-          remote_reference = beachhead.daemonize(&quot;localhost&quot;, 0.25)
-          remote_reference.deploy_agents
-          # Have to sleep long enough to warlock to reap dead process
-          sleep 1.0
-          assert_equal 1, Beachhead.warlock.demon_count
-        ensure
+        SimpleTestCentralCommand.new.with_drb_server do |central_command|
           begin
-            Beachhead.warlock.stop_demons
+            DeepTest.logger.level = Logger::ERROR
+            beachhead = Beachhead.new &quot;&quot;, Options.new({}), stub(:address =&gt; &quot;localhost&quot;)
+            beachhead.stubs(:central_command).returns central_command
+            beachhead.stubs(:start_agent)
+            # Since we're not actually starting agents, we don't want to exit when none are running for this test
+            beachhead.warlock.stubs(:exit_when_none_running)
+            remote_reference = beachhead.daemonize(&quot;localhost&quot;, 0.25)
+            remote_reference.deploy_agents
+            # Have to sleep long enough to warlock to reap dead process
+            sleep 1.0
+            assert_equal 1, beachhead.warlock.demon_count
           ensure
-            DeepTest.logger.level = log_level
+            begin
+              beachhead.warlock.stop_demons
+            ensure
+              DeepTest.logger.level = log_level
+            end
           end
         end
       end</diff>
      <filename>test/deep_test/distributed/beachhead_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -112,7 +112,7 @@ module DeepTest
         assert_raises(NoDispatchReceiversError) {controller.dispatch(:another_call)}
       end
 
-      test &quot;error is printed with backtrace when it occurr&quot; do
+      test &quot;error is printed with backtrace when it occurrs&quot; do
         e = Exception.new(&quot;message&quot;)
         e.set_backtrace %w[file1:1 file2:2]
         receiver = mock</diff>
      <filename>test/deep_test/distributed/dispatch_controller_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,7 @@ module DeepTest
           &quot;ssh -4 remote_host &quot; + 
           &quot;'#{ShellEnvironment.like_login} &amp;&amp; cd /tmp/myhost_my_local_dir &amp;&amp; &quot; + 
           &quot;rake deep_test:establish_beachhead &quot; + 
-          &quot;OPTIONS=#{options.to_command_line} HOST=remote_host'&quot;
+          &quot;OPTIONS=#{options.to_command_line} HOST=remote_host' 2&gt;&amp;1&quot;
         ).returns(&quot;blah blah\nBeachhead url: druby://remote_host:9999\nblah&quot;)
 
         beachhead = landing_ship.establish_beachhead(options)
@@ -37,7 +37,7 @@ module DeepTest
           &quot;ssh -4 remote_host -l me &quot; + 
           &quot;'#{ShellEnvironment.like_login} &amp;&amp; cd /tmp/myhost_my_local_dir &amp;&amp; &quot; + 
           &quot;rake deep_test:establish_beachhead &quot; + 
-          &quot;OPTIONS=#{options.to_command_line} HOST=remote_host'&quot;
+          &quot;OPTIONS=#{options.to_command_line} HOST=remote_host' 2&gt;&amp;1&quot;
         ).returns(&quot;blah blah\nBeachhead url: druby://remote_host:9999\nblah&quot;)
 
         landing_ship.establish_beachhead(options)</diff>
      <filename>test/deep_test/distributed/landing_ship_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,43 +20,5 @@ module DeepTest
 
       deployment.load_files([:file_1, :file_2])
     end
-
-    test &quot;deploy_agents redirects stdout and stderr back to central_command&quot; do
-      agent_class = Class.new do
-        def initialize(agent_num, central_command, listeners);  end
-        def run; puts &quot;hello stdout&quot;; $stderr.puts &quot;hello stderr&quot; end
-      end
-
-      central_command = stub :stdout =&gt; StringIO.new, :stderr =&gt; StringIO.new
-
-      with_drb_server_for central_command do |drb_server|
-        options = stub :number_of_agents =&gt; 1, 
-                       :central_command =&gt; DRbObject.new_with_uri(drb_server.uri),
-                       :new_listener_list =&gt; []
-
-        run_agents_to_completion LocalDeployment.new(options, agent_class)
-      end
-
-      assert_equal &quot;hello stdout\n&quot;, central_command.stdout.string
-      assert_equal &quot;hello stderr\n&quot;, central_command.stderr.string
-    end
-
-    def with_drb_server_for(front)
-      # using drbunix prevents a getaddrinfo on our host, which can take 5 seconds
-      drb_server = DRb::DRbServer.new &quot;drbunix:&quot;, front
-
-      begin
-        yield drb_server
-      ensure
-        drb_server.stop_service
-      end
-    end
-
-    def run_agents_to_completion(deployment)
-      deployment.deploy_agents
-      deployment.wait_for_completion
-    ensure
-      deployment.terminate_agents
-    end
   end
 end</diff>
      <filename>test/deep_test/local_deployment_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,11 +3,10 @@ require File.dirname(__FILE__) + &quot;/../test_helper&quot;
 module DeepTest
   unit_tests do
     test &quot;shutdown calls done_with_work&quot; do
-      main = Main.new(nil, stub_everything, nil)
-      central_command = mock
+      main = Main.new(nil, stub_everything, nil, central_command = mock)
       central_command.expects(:done_with_work)
 
-      main.shutdown(central_command)
+      main.shutdown
     end
   end
 end</diff>
      <filename>test/deep_test/main_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,38 +3,105 @@ require File.dirname(__FILE__) + '/../test_helper'
 module DeepTest
   unit_tests do
     test &quot;running? is true if sending kill(0, pid) does not fail&quot; do
-      warlock = Warlock.new
+      warlock = Warlock.new mock
       Process.expects(:kill).with(0, :pid)
       assert_equal true, warlock.running?(:pid)
     end
     
     test &quot;running? is false if Process.kill(0, pid) raises Errno::ESRCH&quot; do
-      warlock = Warlock.new
+      warlock = Warlock.new mock
       Process.stubs(:kill).raises(Errno::ESRCH)
       assert_equal false, warlock.running?(:pid)
     end
     
     test &quot;running? is true if Process.kill raises Exception&quot; do
-      warlock = Warlock.new
+      warlock = Warlock.new mock
       Process.stubs(:kill).raises(Exception)
       assert_equal true, warlock.running?(:pid)
     end
 
     test &quot;demon_count is 0 initially&quot; do
-      assert_equal 0, Warlock.new.demon_count
+      assert_equal 0, Warlock.new(mock).demon_count
     end
 
     test &quot;add_demon increases demon_count by 1&quot; do
-      warlock = Warlock.new
+      warlock = Warlock.new mock
       warlock.send(:add_demon, &quot;name&quot;, 1)
       assert_equal 1, warlock.demon_count
     end
 
     test &quot;remove_demon increases demon_count by 1&quot; do
-      warlock = Warlock.new
+      warlock = Warlock.new mock
       warlock.send(:add_demon, &quot;name&quot;, 1)
       warlock.send(:remove_demon, &quot;name&quot;, 1)
       assert_equal 0, warlock.demon_count
     end
+
+    test &quot;start redirects stdout and stderr back to central_command&quot; do
+      central_command = SimpleTestCentralCommand.new
+      central_command.with_drb_server do |remote_reference|
+        warlock = Warlock.new remote_reference
+        begin
+          warlock.start(&quot;test&quot;) do
+            puts &quot;hello stdout&quot;
+            $stderr.puts &quot;hello stderr&quot;
+          end
+          warlock.wait_for_all_to_finish
+        ensure
+          warlock.stop_demons
+        end
+      end
+
+      assert_equal &quot;hello stdout\n&quot;, central_command.stdout.string
+      assert_equal &quot;hello stderr\n&quot;, central_command.stderr.string
+    end
+
+    test &quot;start reopens original stdout and stderr to /dev/null if detach_io is true&quot; do
+      test_stdout, test_stderr = Tempfile.new(&quot;stdout&quot;), Tempfile.new(&quot;stderr&quot;)
+      central_command = SimpleTestCentralCommand.new
+      central_command.with_drb_server do |remote_reference|
+        warlock = Warlock.new remote_reference
+        begin
+          require 'tempfile'
+          ProxyIO.replace_stdout_stderr! test_stdout, test_stderr do
+            warlock.start(&quot;test&quot;, :detach_io =&gt; true) do
+              test_stdout.puts &quot;hello stdout&quot;
+              test_stderr.puts &quot;hello stderr&quot;
+            end
+            warlock.wait_for_all_to_finish
+          end
+        ensure
+          warlock.stop_demons
+        end
+      end
+
+      test_stdout.rewind; test_stderr.rewind
+      assert_equal &quot;&quot;, test_stdout.read
+      assert_equal &quot;&quot;, test_stderr.read
+    end
+
+    test &quot;start leave original stdout and untouched if detach_io is false&quot; do
+      test_stdout, test_stderr = Tempfile.new(&quot;stdout&quot;), Tempfile.new(&quot;stderr&quot;)
+      central_command = SimpleTestCentralCommand.new
+      central_command.with_drb_server do |remote_reference|
+        warlock = Warlock.new remote_reference
+        begin
+          require 'tempfile'
+          ProxyIO.replace_stdout_stderr! test_stdout, test_stderr do
+            warlock.start(&quot;test&quot;, :detach_io =&gt; false) do
+              test_stdout.puts &quot;hello stdout&quot;
+              test_stderr.puts &quot;hello stderr&quot;
+            end
+            warlock.wait_for_all_to_finish
+          end
+        ensure
+          warlock.stop_demons
+        end
+      end
+
+      test_stdout.rewind; test_stderr.rewind
+      assert_equal &quot;hello stdout\n&quot;, test_stdout.read
+      assert_equal &quot;hello stderr\n&quot;, test_stderr.read
+    end
   end
 end</diff>
      <filename>test/deep_test/warlock_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,25 @@
 module DeepTest
   class SimpleTestCentralCommand
     attr_accessor :debug, :simulate_result_overdue_error
+    attr_accessor :stdout, :stderr
 
     def initialize
       @work_units = []
       @test_results = []
       @semaphore = Mutex.new
+      @stdout = StringIO.new
+      @stderr = StringIO.new
+    end
+
+    def with_drb_server
+      # using drbunix prevents a getaddrinfo on our host, which can take 5 seconds
+      drb_server = DRb::DRbServer.new &quot;drbunix:&quot;, self
+
+      begin
+        yield DRbObject.new_with_uri(drb_server.uri)
+      ensure
+        drb_server.stop_service
+      end
     end
 
     def take_result</diff>
      <filename>test/simple_test_central_command.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
 class TestLogger &lt; DeepTest::Logger
-  def initialize
+  def initialize(device = nil)
     super(StringIO.new)
   end
 
   def logged_output
-    @logdev.dev.string
+    io_stream.string
   end
 end
 </diff>
      <filename>test/test_logger.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>69cc204df6072430103359f2622bb8a0494d90a8</id>
    </parent>
  </parents>
  <author>
    <name>qxjit (David Vollbracht)</name>
    <email>david.vollbracht@gmail.com</email>
  </author>
  <url>http://github.com/qxjit/deep-test/commit/b75f3af1c831040ff97cef80f9217b2a89056daa</url>
  <id>b75f3af1c831040ff97cef80f9217b2a89056daa</id>
  <committed-date>2009-06-29T19:30:07-07:00</committed-date>
  <authored-date>2009-06-29T19:30:07-07:00</authored-date>
  <message>push redirecting of stdout and stderr back to central command down into warlock</message>
  <tree>85afe014e50716d6a8895009aa527e8fbb1f8c05</tree>
  <committer>
    <name>qxjit (David Vollbracht)</name>
    <email>david.vollbracht@gmail.com</email>
  </committer>
</commit>
