Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2018-01-12 02:12:34 +0300
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2018-03-15 05:39:08 +0300
commit1baac9211238f60d2d2a50cccd0bea6979bfa6ba (patch)
tree7f07f3d1eb65f31f01c52973d115d349a95e3de2 /app/services/files
parentffb1c65b0ba7fa8a4ea7e128cb47449f04837869 (diff)
Multi-file upload and Commit API obey LFS filters
Updates Files::MultiService for the commits API which is in turn used by the multi-file upload web UI Ensures that files which should be in LFS are transformed into LFS pointers Uses Lfs::Transformer which then links LfsObjectProjects on success
Diffstat (limited to 'app/services/files')
-rw-r--r--app/services/files/create_service.rb5
-rw-r--r--app/services/files/multi_service.rb25
2 files changed, 24 insertions, 6 deletions
diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb
index 675b05e8fc4..b8ae03842a3 100644
--- a/app/services/files/create_service.rb
+++ b/app/services/files/create_service.rb
@@ -1,9 +1,8 @@
module Files
class CreateService < Files::BaseService
def create_commit!
- handler = Lfs::FileTransformer.new(project, @branch_name)
-
- handler.new_file(@file_path, @file_content) do |content_or_lfs_pointer|
+ Lfs::FileTransformer.link_lfs_objects(project, @branch_name) do |transformer|
+ content_or_lfs_pointer = transformer.new_file(@file_path, @file_content)
create_transformed_commit(content_or_lfs_pointer)
end
end
diff --git a/app/services/files/multi_service.rb b/app/services/files/multi_service.rb
index a03c59f569d..bd88c46e4af 100644
--- a/app/services/files/multi_service.rb
+++ b/app/services/files/multi_service.rb
@@ -3,11 +3,32 @@ module Files
UPDATE_FILE_ACTIONS = %w(update move delete).freeze
def create_commit!
+ Lfs::FileTransformer.link_lfs_objects(project, @branch_name) do |transformer|
+ actions = actions_after_lfs_transformation(transformer, params[:actions])
+
+ commit_actions!(actions)
+ end
+ end
+
+ private
+
+ def actions_after_lfs_transformation(transformer, actions)
+ actions.map do |action|
+ if action[:action] == 'create'
+ content = transformer.new_file(action[:file_path], action[:content])
+ action[:content] = content
+ end
+
+ action
+ end
+ end
+
+ def commit_actions!(actions)
repository.multi_action(
current_user,
message: @commit_message,
branch_name: @branch_name,
- actions: params[:actions],
+ actions: actions,
author_email: @author_email,
author_name: @author_name,
start_project: @start_project,
@@ -17,8 +38,6 @@ module Files
raise_error(e)
end
- private
-
def validate!
super