<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -168,13 +168,27 @@ module Engines
           raise &quot;Could not copy #{file} to #{target}: \n&quot; + e 
         end
       end  
-    end   
+    end
     
-    def mirror_by_symlinking(source, destination)
-      FileUtils.mkdir_p(File.dirname(destination))
-      logger.warn &quot;symlinking #{source} into #{destination}&quot;
-      return unless File.directory?(source)
-      system &quot;ln -nsf #{source} #{destination}&quot;
+    # Create a symbolical link from (+source+) to (+destination+), falling back to recursive 
+    # copying on non-supporting platforms
+    def symlink_or_mirror(source, destination)
+      parent_directory = File.dirname(destination)
+      unless File.exist?(parent_directory)
+        FileUtils.mkdir_p(parent_directory)
+      end
+      if File.exist?(destination)
+        if File.symlink?(destination)
+          File.delete(destination)
+          File.symlink(source, destination)
+        else
+          mirror_files_from(source, destination)
+        end
+      else
+        unless File.symlink(source, destination) # returns nil on non-supporting platforms
+          mirror_files_from(source, destination)
+        end
+      end
     end
   end  
 end
\ No newline at end of file</diff>
      <filename>lib/engines.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,7 @@ should edit the files within the &lt;plugin_name&gt;/assets/ directory itself.}
         return if plugin.public_directory.nil?
         begin 
           Engines.logger.debug &quot;Attempting to copy plugin assets from '#{plugin.public_directory}' to '#{Engines.public_directory}'&quot;
-          Engines.mirror_by_symlinking(plugin.public_directory, File.join(Engines.public_directory, plugin.name))      
+          Engines.symlink_or_mirror(plugin.public_directory, File.join(Engines.public_directory, plugin.name))      
         rescue Exception =&gt; e
           Engines.logger.warn &quot;WARNING: Couldn't create the public file structure for plugin '#{plugin.name}'; Error follows:&quot;
           Engines.logger.warn e</diff>
      <filename>lib/engines/assets.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>982f350a9c31d1233a5d9d746ad6cff37b591a0c</id>
    </parent>
  </parents>
  <author>
    <name>yar</name>
    <email>yar@laptop</email>
  </author>
  <url>http://github.com/yar/engines/commit/2bfbe08547d0ede6a25cca846bb970010b7b561e</url>
  <id>2bfbe08547d0ede6a25cca846bb970010b7b561e</id>
  <committed-date>2008-05-02T12:26:05-07:00</committed-date>
  <authored-date>2008-05-02T12:26:05-07:00</authored-date>
  <message>Falling back to recursive asset copying when symbolical links are not supported</message>
  <tree>6aea2e90bceb3b8286ad16d9df298e734339424e</tree>
  <committer>
    <name>yar</name>
    <email>yar@laptop</email>
  </committer>
</commit>
