Project

General

Profile

Actions

Bug #7246

closed

FileUtils.cp_r does not preserve attributes of directories

Added by wedesoft (Jan Wedekind) about 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]
Backport:
[ruby-core:48603]

Description

(({FileUtils.cp_r})) does not preserve the file attributes of directories because the attributes are set before copying to the directory.
The following monkey patch fixes this behaviour. However the monkey patch relies on the contents of the source directory not changing during the copy operation.

(({require 'fileutils'

def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
Entry_.new(src, nil, dereference_root).traverse do |ent|
destent = Entry_.new(dest, ent.rel, false)
File.unlink destent.path if remove_destination && File.file?(destent.path)
ent.copy destent.path
end
Entry_.new(src, nil, dereference_root).postorder_traverse do |ent|
destent = Entry_.new(dest, ent.rel, false)
ent.copy_metadata destent.path if preserve
end
end
module_function :copy_entry

end}))


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #5419: FileUtils.cp_rの:preserveの動作Closedseki (Masatoshi Seki)Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0