summaryrefslogtreecommitdiff
path: root/app/services/files/create_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/files/create_service.rb')
-rw-r--r--app/services/files/create_service.rb22
1 files changed, 15 insertions, 7 deletions
diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb
index 23833aa78ec..0a80455bc6b 100644
--- a/app/services/files/create_service.rb
+++ b/app/services/files/create_service.rb
@@ -1,7 +1,7 @@
require_relative "base_service"
module Files
- class CreateService < BaseService
+ class CreateService < Files::BaseService
def execute
allowed = Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref)
@@ -33,16 +33,24 @@ module Files
end
end
+ content =
+ if params[:encoding] == 'base64'
+ Base64.decode64(params[:content])
+ else
+ params[:content]
+ end
- new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
- created_successfully = new_file_action.commit!(
- params[:content],
+ sha = repository.commit_file(
+ current_user,
+ file_path,
+ content,
params[:commit_message],
- params[:encoding],
- params[:new_branch]
+ params[:new_branch] || ref
)
- if created_successfully
+
+ if sha
+ after_commit(sha)
success
else
error("Your changes could not be committed, because the file has been changed")