diff options
author | Micaƫl Bergeron <mbergeron@gitlab.com> | 2018-06-28 17:57:28 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-07-03 19:57:15 +0300 |
commit | cebdd267e672c75696cd534bb89d10fda8de129f (patch) | |
tree | ae1acb12eec102ac3c7cf0769dfaaa4df29c4a1b /lib/gitlab/gfm | |
parent | e61f66b3d16cf097af8fbf3072018fd7d9ec8b67 (diff) |
add support for file copy on object storage
Diffstat (limited to 'lib/gitlab/gfm')
-rw-r--r-- | lib/gitlab/gfm/uploads_rewriter.rb | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/lib/gitlab/gfm/uploads_rewriter.rb b/lib/gitlab/gfm/uploads_rewriter.rb index ac00f3e2f8d..f7e66697da3 100644 --- a/lib/gitlab/gfm/uploads_rewriter.rb +++ b/lib/gitlab/gfm/uploads_rewriter.rb @@ -23,11 +23,8 @@ module Gitlab file = find_file(@source_project, $~[:secret], $~[:file]) break markdown unless file.try(:exists?) - new_uploader = FileUploader.new(target_project) - with_link_in_tmp_dir(file.file) do |open_tmp_file| - new_uploader.store!(open_tmp_file) - end - new_uploader.markdown_link + moved = FileUploader.copy_to(file, target_project) + moved.markdown_link end end @@ -48,20 +45,7 @@ module Gitlab def find_file(project, secret, file) uploader = FileUploader.new(project, secret: secret) uploader.retrieve_from_store!(file) - uploader.file if uploader.object_store == ObjectStorage::Store::LOCAL - end - - # Because the uploaders use 'move_to_store' we must have a temporary - # file that is allowed to be (re)moved. - def with_link_in_tmp_dir(file) - dir = Dir.mktmpdir('UploadsRewriter', File.dirname(file)) - # The filename matters to Carrierwave so we make sure to preserve it - tmp_file = File.join(dir, File.basename(file)) - File.link(file, tmp_file) - # Open the file to placate Carrierwave - File.open(tmp_file) { |open_file| yield open_file } - ensure - FileUtils.rm_rf(dir) + uploader end end end |