From 06c35cfa65ed5e023bb8b82af93a3d711e550913 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Fri, 23 Aug 2019 14:52:12 -0700 Subject: [ruby/fileutils] Fix cp_r with symlink root on Windows Previously this would copy the symlink root as a symlink instead of creating a new root directory. This modifies the source to expand it using File.realpath before starting the copy. Fixes Ruby Bug 12123 https://github.com/ruby/fileutils/commit/7359cef359 --- lib/fileutils.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/fileutils.rb') diff --git a/lib/fileutils.rb b/lib/fileutils.rb index 3c23ffc0e6..27524fcc6a 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -488,7 +488,11 @@ module FileUtils # If +remove_destination+ is true, this method removes each destination file before copy. # def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false) - Entry_.new(src, nil, dereference_root).wrap_traverse(proc do |ent| + if dereference_root + src = File.realpath(src) + end + + Entry_.new(src, nil, false).wrap_traverse(proc do |ent| destent = Entry_.new(dest, ent.rel, false) File.unlink destent.path if remove_destination && (File.file?(destent.path) || File.symlink?(destent.path)) ent.copy destent.path -- cgit v1.2.3