summaryrefslogtreecommitdiff
path: root/lib/gitlab/uploads_transfer.rb
diff options
context:
space:
mode:
authorHan Loong Liauw <hanloongliauw@gmail.com>2015-10-17 09:30:43 +1100
committerHan Loong Liauw <hanloongliauw@gmail.com>2015-10-17 09:30:43 +1100
commit1565a95da17ba8425486839d0712a9141d66b98f (patch)
treed2a9d3afaf90b12c1a71fa8c82ac168becd5c75b /lib/gitlab/uploads_transfer.rb
parent45e11d95f27584f699392fad8f54c1807e562d7f (diff)
parentc856a7a5934fba13598be09507c2090888f57a39 (diff)
downloadgitlab-ce-1565a95da17ba8425486839d0712a9141d66b98f.tar.gz
Merge branch 'master' into add-dates-snippets-show
Diffstat (limited to 'lib/gitlab/uploads_transfer.rb')
-rw-r--r--lib/gitlab/uploads_transfer.rb35
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