在Ruby递归副本中包含空子目录

时间:2014-07-31 15:13:13

标签: ruby homebrew

查看Fileutils.cp_r文档,它似乎在shell中使用cp -r。此命令将忽略空的子目录(至少在我的OS X 10.9机器上)。

有人可以建议一个允许我包含空子目录的解决方案吗?

编辑:我的shell 中的cp -r 实际上复制了空的子目录,所以现在我更加困惑......

3 个答案:

答案 0 :(得分:1)

奇怪。它甚至应该复制空目录。我查看了Linux和OSX,在这里你从OSX获得了会话:

% mkdir empty
% ruby -e "require 'fileutils'; FileUtils.cp_r 'empty', 'double'"
% ls -ld double
drwxr-xr-x  2 grych  staff  68 Jul 31 17:22 double

答案 1 :(得分:0)

我在Homebrew包管理器中编写了一个文件,结果发现他们的构建环境最后删除了空目录。

答案 2 :(得分:0)

哇 - 所以我在开发宝石时遇到了这个问题。有两点需要注意:

gemspec通常根据git中的可用文件构建:

Gem::Specification.new do |spec|
  spec.files         = `git ls-files -z`.split("\x0")
end
然而,

Git将忽略版本控制中的空目录。

我能够通过向所有空目录添加.keep文件来解决此问题,包括它们的嵌套空目录,问题已解决。这可以解释你的例子中的shell vs ruby​​场景。

有关将文件保存在此处的详细信息:Random 'concerns' folders and '.keep' files

相关问题