From 4bd64363c12a1b00faa52fcf4970fbfdc11c15ab Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 2 Nov 2006 07:55:04 +0000 Subject: Generated directories are recursively svn added, like mkdir -p. Closes #6416. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5395 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/lib/rails_generator/commands.rb | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'railties/lib/rails_generator') diff --git a/railties/lib/rails_generator/commands.rb b/railties/lib/rails_generator/commands.rb index 9bc20b1c79..f72fb3d5c6 100644 --- a/railties/lib/rails_generator/commands.rb +++ b/railties/lib/rails_generator/commands.rb @@ -299,12 +299,26 @@ module Rails logger.exists relative_path else logger.create relative_path - FileUtils.mkdir_p(path) unless options[:pretend] - - # Optionally add file to subversion - system("svn add #{path}") if options[:svn] - end - end + unless options[:pretend] + FileUtils.mkdir_p(path) + + # Subversion doesn't do path adds, so we need to add + # each directory individually. + # So stack up the directory tree and add the paths to + # subversion in order without recursion. + if options[:svn] + stack=[relative_path] + until File.dirname(stack.last) == stack.last # dirname('.') == '.' + stack.push File.dirname(stack.last) + end + stack.reverse_each do |rel_path| + svn_path = destination_path(rel_path) + system("svn add -N #{svn_path}") unless File.directory?(File.join(svn_path, '.svn')) + end + end + end + end + end # Display a README. def readme(*relative_sources) -- cgit v1.2.3