diff options
author | Han Loong Liauw <hanloongliauw@gmail.com> | 2015-10-17 09:32:31 +1100 |
---|---|---|
committer | Han Loong Liauw <hanloongliauw@gmail.com> | 2015-10-17 09:32:31 +1100 |
commit | 02e8beaa0b83a343752ebf60e4fca4482c17f9e3 (patch) | |
tree | e00847b274daa7fa03fd7a4647154cc2e4d98e85 /lib/gitlab/uploads_transfer.rb | |
parent | 0bea5ced8bf4c9306f8f8e912313731a43d16f4c (diff) | |
parent | c856a7a5934fba13598be09507c2090888f57a39 (diff) | |
download | gitlab-ce-02e8beaa0b83a343752ebf60e4fca4482c17f9e3.tar.gz |
Merge branch 'master' into remove-forks-from-projects-settings
Diffstat (limited to 'lib/gitlab/uploads_transfer.rb')
-rw-r--r-- | lib/gitlab/uploads_transfer.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/gitlab/uploads_transfer.rb b/lib/gitlab/uploads_transfer.rb new file mode 100644 index 00000000000..be8fcc7b2d2 --- /dev/null +++ b/lib/gitlab/uploads_transfer.rb @@ -0,0 +1,35 @@ +module Gitlab + class UploadsTransfer + def move_project(project_path, namespace_path_was, namespace_path) + new_namespace_folder = File.join(root_dir, namespace_path) + FileUtils.mkdir_p(new_namespace_folder) unless Dir.exist?(new_namespace_folder) + from = File.join(root_dir, namespace_path_was, project_path) + to = File.join(root_dir, namespace_path, project_path) + move(from, to, "") + end + + def rename_project(path_was, path, namespace_path) + base_dir = File.join(root_dir, namespace_path) + move(path_was, path, base_dir) + end + + def rename_namespace(path_was, path) + move(path_was, path) + end + + private + + def move(path_was, path, base_dir = nil) + base_dir = root_dir unless base_dir + from = File.join(base_dir, path_was) + to = File.join(base_dir, path) + FileUtils.mv(from, to) + rescue Errno::ENOENT + false + end + + def root_dir + File.join(Rails.root, "public", "uploads") + end + end +end |