diff --git a/app/models/namespace.rb b/app/models/namespace.rb index d34e5a99c79..89c1f9adb5a 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -52,7 +52,7 @@ class Namespace < ActiveRecord::Base def ensure_dir_exist unless dir_exists? - system("mkdir -m 770 #{namespace_full_path}") + FileUtils.mkdir( namespace_full_path, mode: 0770 ) end end @@ -71,11 +71,12 @@ class Namespace < ActiveRecord::Base if File.exists?(new_path) raise "Already exists" end - - if system("mv #{old_path} #{new_path}") + + begin + FileUtils.mv( old_path, new_path ) send_update_instructions @require_update_gitolite = true - else + rescue Exception => e raise "Namespace move error #{old_path} #{new_path}" end end @@ -88,7 +89,7 @@ class Namespace < ActiveRecord::Base def rm_dir dir_path = File.join(Gitlab.config.gitolite.repos_path, path) - system("rm -rf #{dir_path}") + FileUtils.rm_r( dir_path, force: true ) end def send_update_instructions diff --git a/lib/gitlab/project_mover.rb b/lib/gitlab/project_mover.rb index def6e90001b..207e585f572 100644 --- a/lib/gitlab/project_mover.rb +++ b/lib/gitlab/project_mover.rb @@ -16,7 +16,7 @@ module Gitlab def execute # Create new dir if missing new_dir_path = File.join(Gitlab.config.gitolite.repos_path, new_dir) - system("mkdir -m 770 #{new_dir_path}") unless File.exists?(new_dir_path) + FileUtils.mkdir( new_dir_path, mode: 0770 ) unless File.exists?(new_dir_path) old_path = File.join(Gitlab.config.gitolite.repos_path, old_dir, "#{project.path}.git") new_path = File.join(new_dir_path, "#{project.path}.git") @@ -25,17 +25,18 @@ module Gitlab raise ProjectMoveError.new("Destination #{new_path} already exists") end - if system("mv #{old_path} #{new_path}") + begin + FileUtils.mv( old_path, new_path ) log_info "Project #{project.name} was moved from #{old_path} to #{new_path}" true - else + rescue Exception => e message = "Project #{project.name} cannot be moved from #{old_path} to #{new_path}" - log_info "Error! #{message}" + log_info "Error! #{message} (#{e.message})" raise ProjectMoveError.new(message) end end - protected + protected def log_info message Gitlab::AppLogger.info message